Linkerfehler beim Einbinden der ID3lib-Bibliothek in Windows-Forms-Anwendung
-
Hallo,
habe ein ähnliches Problem, deshalb krame ich den thread nochmal hervor. Habe auch zwei libs in einem WindowsForms(CLI)-Projekt eingebunden und Linker-Fehler erhalten. Ich verwende Beispiel-Code aus einem Konsolen-Projekt wo alles funktioniert. Habe dann mal den Schalter auf (/clr) gesetzt. Jetzt bekomme ich aber wieder andere Fehler:1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QAEPAV123@XZ) ist bereits in libhasp_cpp_windows_mt_d.lib(haspimpl.obj) definiert. 1>libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(ios.obj) : error LNK2005: "public: static void __cdecl std::ios_base::_Addstd(class std::ios_base *)" (?_Addstd@ios_base@std@@SAXPAV12@@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@std@@CAXPAV123@@Z) ist bereits in msvcprtd.lib(locale0_implib.obj) definiert. 1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(void)" (?_Init@locale@std@@CAPAV_Locimp@12@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)" (?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@PBD@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" (?_Locinfo_dtor@_Locinfo@std@@SAXPAV12@@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert.
Kann mir jemand sagen was da schief läuft?
-
Entweder ist Dein Lib-statisch gegen Dein Programm gelinkt, oder Dein Programm.
D.h. Du musst Dein Programm auf die gleiche CRT-Einstellung bringen für die die Lib gebaut wurde.Die CLR Einstellungen haben damit nichts zu tun. Die sollten eigentlich aus sein.
-
Danke erstmal für die Antwort.
Könntest du das etwas genauer erläutern was ich da tun muss?
Bin noch Anfänger auf dem Gebiet
-
xXMartinoXx schrieb:
Hallo,
habe ein ähnliches Problem, deshalb krame ich den thread nochmal hervor. Habe auch zwei libs in einem WindowsForms(CLI)-Projekt eingebunden und Linker-Fehler erhalten....1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)"
Martin Richter schrieb:
Die CLR Einstellungen haben damit nichts zu tun. Die sollten eigentlich aus sein.
Mit anderen Worten: MSVCP100D ist die Debug-Version der C++ runtime library
und hat nichts mit CLI zu tun.Du wirst dich entscheiden müssen ob du C++ mit
C Run-Time Libraries (CRT)
http://msdn.microsoft.com/en-us/library/abx4dbyh(v=vs.100).aspxoder .NET basiertes CLI verwenden möchtest ->dann hier falsches Forum!
-
Da ich mit C++/CLI an der Stelle nicht weiter kam, habe ich es nun im Borland Builder gelöst. Dort hatte ich keine Probleme mit dem Einbinden der libs.
-
Du wärest auch mit dem normalen VC Compiler weiter gekommen.
Du musst nur darauf hören was man Dir sagt. Schalte C++/CLI aus.
-
Und wo/wie hätte ich das tun sollen?
Du hast ja vorher nicht auf meine Rückfrage geantwortet...
-
In den Projekteinstellungen. Gleich unter General auf der ersten Seite.
Ein wenig Eigeninitiative und lesen der Doku schadet nicht
-
Kann dir nicht ganz folgen. Ich habe doch aber ein CLI-Projekt (WindowsForms mit C++) erstellt...das kann ich dann doch nicht einfach ausschalten!?
-
Wenn Du es im Borladn Builder lösen kannst, dann brauchst Du kein C++/CLI...