2009-08-06 12 views
0

Ich habe einen Fehler beim Kompilieren eines Projekts. Ich versuche, mit Visual Studio auf eine Bibliothek zu verlinken, die ich unter Windows habe.C++ Linking Problem

Beim Versuch, die obkect (mit neu) zu erstellen, erhalte ich folgende Fehlermeldung:

Error 2 error LNK2005: "public: __thiscall std::basic_string,class std::allocator >::~basic_string,class std::allocator >(void)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) already defined in RMLibV053.lib(Inifile.obj) msvcprtd.lib

I verwendet #ifndef I disable Warnung verwendet

+0

Haben Sie Ihre Compiler-Pfade geändert oder zusätzliche Bibliotheken hinzugefügt? –

+0

ja ich habe den Pfad hinzugefügt. –

Antwort

3

Es kann sein, dass Ihr Code so eingerichtet ist, dass er eine andere Laufzeitumgebung (single-threaded, multi-threaded, multi-threaded DLL) als Ihre PTLibV002.lib-Bibliothek verwendet, als sie erstellt wurde.

+1

nicht nur eine ist im System –

+0

Dies ist fast immer die Ursache für dieses Problem. PTLibV002.lib wird wahrscheinlich mit der Einstellung für die Verwendung der statisch verknüpften Laufzeitbibliothek kompiliert. – KJAWolf

+0

ja ich brauche statisch verknüpfte Laufzeitbibliothek –

0

Sie wahrscheinlich eine ähnliche Bibliothek, um zusätzliche Bibliotheken hinzugefügt .

+0

Nein, ich habe nur eine hinzugefügt –

2

Wenn PTLibV002.lib kompiliert wurde, um die statisch verknüpfte C++ - Bibliothek zu verwenden, und Ihre Binärdatei die C++ - Bibliothek als DLL verwendet, ist dies der Verknüpfungsfehler, den Sie erhalten würden. Dies liegt daran, dass PTLibV002.lib die Definitionen von Funktionen aus der STL enthält, die es verwendet, und Ihre Binärdatei eine andere Definition enthält, die auf die C++ - Bibliotheks-DLL verweist.

+0

ich comiple es als statisch. Ich benutze Visual Studio und in der Verknüpfung definiert, also denke ich, dass es nicht der Fall ist. –

0

Wie Ferruccio zuvor erklärt.

Ich verwendete auf der Visual Studio-Konfiguration von Projekt: kompiliert mit der Einstellung, um die dynamisch verknüpfte Laufzeitbibliothek zu verwenden: Multithread-Debug-DLL (/ MDD) anstelle von Multi-Thread-Debug (/ MTd).