Question

Je développe l'application en utilisant VC ++ 6.

J'ai une DLL 3ème partie. Cette bibliothèque compilé en tant que DLL multithread (/ MD) et ma demande aussi. Mais je ne parviens pas à lien:

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.

De Je vois que même si les deux 3e bibliothèque et mon code compilé comme / MD , il y a peut-être un conflit avec l'ancien / nouveau Beining iostream utilisé.

Y at-il moyen de ce iostream d'une durée déterminée bibliothèque ancien / nouveau est utilisé par la bibliothèque 3ème partie?

UPD: La 3ème partie lib est statique et non dynamique que je pensais avant. Le lib est compilé / MD. Dépendance Walker fonctionne wirh DLL et non qui Libs.

Était-ce utile?

La solution

Il y a dépendance Walker, si vous ne connaissez pas cet outil. http://dependencywalker.com/

Glissez et déposez votre DLL ou EXE dans la fenêtre principale. Il montrera toutes les dépendances.

Et si vous souhaitez créer un lien vers une DLL 3ème partie, tout ce que vous avez besoin est un .lib fait pour cette DLL. Si vous ne l'avez pas .lib, vous pouvez toujours faire un à l'aide lib.exe ou polib.exe des outils Pellés de c. polib est plus facile à utiliser parce que vous n'avez pas besoin d'écrire un fichier def. http://www.smorgasbordet.com/pellesc/

J'espère que cela aide à votre question.

Modifier: Avez-vous le code source pour le .lib que vous utilisez

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top