Frage

Ich entwickle Anwendung mit VC ++ 6.

Ich habe einen 3rd-Party-DLL. Diese Bibliothek kompiliert als Multithreaded DLL (/ MD) und zu meiner Anwendung. Aber ich nicht, Link:

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.

hier Ich sehe, dass, obwohl beide 3. Bibliothek und mein Code kompiliert als / MD gibt es möglicherweise Konflikte mit alten / neuen iostream verwendet Beining.

Sie haben Art und Weise zu bestimmten, was iostream-Bibliothek alt / neu von 3rd-Party-Bibliothek verwendet wird?

UPD: Der 3rd-Party-lib ist statisch und nicht dynamisch, wie ich vorher dachte. Die lib ist / MD zusammengestellt. Dependency Walker arbeitet Wirh DLLs und nicht die Libs.

War es hilfreich?

Lösung

Es ist Dependency Walker, wenn Sie dieses Tool nicht kennen. http://dependencywalker.com/

Drag & Drop Ihre DLL oder EXE auf dem Hauptfenster. Es werden alle Abhängigkeiten zeigen.

Und wenn Sie auf Link zu einer 3rd-Party-DLL wollen, alles, was Sie brauchen, ist ein LIB für diese DLL gemacht. Wenn Sie nicht, dass LIB haben, können Sie immer ein lib.exe oder polib.exe von Pelles C-Tools machen. polib ist einfacher zu benutzen, weil Sie nicht über eine DEF-Datei schreiben müssen. http://www.smorgasbordet.com/pellesc/

Ich hoffe, dass es für Ihre Frage hilft.

Edit: Möchten Sie den Quellcode für die LIB haben Sie mit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top