новичок:Определенная библиотека CRT, используемая библиотекой

StackOverflow https://stackoverflow.com/questions/1957341

  •  21-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложение с использованием 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.

Есть ли способ определить, какая библиотека iostream старая / новая используется сторонней библиотекой?

UPD: Сторонняя библиотека статична, а не динамична, как я думал раньше.Библиотека скомпилирована / MD.Средство обхода зависимостей работает с библиотеками DLL, а не с какими именно библиотеками.

Это было полезно?

Решение

Существует средство устранения зависимостей, если вы не знаете этого инструмента.http://dependencywalker.com/

Перетащите вашу DLL или exe-файл в главное окно.Он покажет все зависимости.

И если вы хотите создать ссылку на стороннюю библиотеку DLL, все, что вам нужно, это .lib, созданный для этой библиотеки DLL.Если у вас нет этой библиотеки .lib, вы всегда можете создать ее с помощью lib.exe или polib.exe из pelles c tools.polib проще в использовании, потому что вам не нужно записывать файл .def.http://www.smorgasbordet.com/pellesc/

Я надеюсь, что это поможет ответить на ваш вопрос.

Редактировать:Есть ли у вас исходный код для .используемой вами библиотеки?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top