Подключение статических библиотек
От: Roman Fadeyev  
Дата: 30.05.02 05:50
Оценка:
Привет всем.


Помогите побороть следующую беду: написал свою библиотечку (.lib) c набором мелких функций, использующихбтолько RTL и STL, без всякого GUI. Теперь создаю консольный проект, подключаю библиотеку и на линковке вижу штук 70 ошибок типа "symbol already defined in module xxx.obj", в большинстве вокруг STL'евского string'a. В основном, дело касалось msvcprtd.lib и еще какой-то библиотеки, типа VClib или что-то в этом роде. Вторую я выкинул (ignore library) — все нормально, первую отключаю — ошибок еще больше — не найены _atexit, _abort..., весь IOstream и т.д. и т.п, так как в моей библиотеке я их не использовал, а стандартную отключил.

Вот так, точнее и не так и не эдак

После долгих мучений я приписал ключ FORCE:MULTIPLE, лишь бы только собрать проект. Проект собрался, но, естественно, с Warnings.

LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/FORCE' specification
msvcprtd.lib(MSVCP70D.dll) : warning LNK4006: "public: __thiscall std::basic_string,class std::allocator >::~basic_string,class std::allocator >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in crtlibd.lib(BaseUtils.obj); second definition ignored
msvcprtd.lib(MSVCP70D.dll) : warning LNK4006: "public: __thiscall std::basic_string,class std::allocator >::basic_string,class std::allocator >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in crtlibd.lib(BaseUtils.obj); second definition ignored
msvcprtd.lib(MSVCP70D.dll) : warning LNK4006: "public: __thiscall std::basic_string,class std::allocator >::basic_string,class std::allocator >(class std::basic_string,class std::allocator > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in crtlibd.lib(BaseUtils.obj); second definition ignored
msvcprtd.lib(MSVCP70D.dll) : warning LNK4006: "public: char const * __thiscall std::basic_string,class std::allocator >::c_str(void)const " (?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ) already defined in crtlibd.lib(BaseUtils.obj); second definition ignored
Debug/grmc.exe : warning LNK4088: image being generated due to /FORCE option; image may not run



Видеть каждый раз при сборке очень неприятно, тем более вот ту строчку про "image nay not run", ободряюще звучит....

Может, кто че расскажет про то как правильно работать с библиотеками? Не для конкретного случая, хотя бы в общих словах. Этот геморрой я помню еще с DOS'a, время идет а он остается

Еще есть мое сообщение про "also imported" на http://www.rsdn.ru/forum/message.asp?mid=21229
Автор: roman_fadeyev
Дата: 12.01.02
, с которым тогда так и не разобрались, может, кто сейчас поможет, задолбали меня уже эти варнинги
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.