Domanda

sto sviluppando un'applicazione che utilizza VC ++ 6.

Ho un DLL di terze parti. Questa libreria compilato come DLL multithread (/ MD) e la mia domanda troppo. Ma non riesco a 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.

qui vedo che anche se entrambi terza biblioteca e il mio codice compilato come / MD , c'è forse un conflitto con il vecchio / nuovo Beining iostream utilizzato.

C'è modo per determinare ciò che iostream libreria è usata vecchio / nuovo dalla libreria di 3a parte?

UPD: Il 3 ° lib partito è statico e non dinamico come pensavo prima. Il lib viene compilato / MD. Dependency Walker lavora wirh DLL e non, che Libs.

È stato utile?

Soluzione

C'è Dependency Walker, se non si conosce questo strumento. http://dependencywalker.com/

Trascinare la DLL o exe nella finestra principale. Mostrerà tutte le dipendenze.

E se si desidera collegare a una DLL 3rd party, tutto ciò che serve è un .lib fatta per quella DLL. Se non si dispone di che Lib, si può sempre fare uno usando LIB.EXE o polib.exe da Pelles C strumenti. polib è più facile da usare, perché non c'è bisogno di scrivere un file .def. http://www.smorgasbordet.com/pellesc/

Spero che aiuta per la tua domanda.

Modifica:? Avete il codice sorgente per il Lib si sta utilizzando

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top