Я занимаюсь разработкой приложения с использованием VC ++ 6.
У меня есть сторонняя DLL. Эта библиотека скомпилирована как многопоточная DLL (/ MD) и мое приложение тоже.
Но я не могу связать:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_strin
g@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in XXXApi.lib(CODbg.obj)
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<c
har,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in XXXApi.lib(Dictionary.obj)
../../Exes/win2k3_oracle11/XXX.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
С здесь Я вижу, что, несмотря на то, что и 3-я библиотека, и мой код скомпилированы в / MD, возможно, существует конфликт со старым / новым использованием iostream beining.
Есть ли способ определить, какая библиотека iostream старая / новая используется сторонней библиотекой?
UPD:
Сторонняя библиотека является статической, а не динамической, как я думал раньше.
Библиотека скомпилирована / MD. Dependency Walker работает с DLL, а не с Lib.