Problem mit alten Bibliotheken
-
Hi,
ich hab folgendes Problem:
ich musst mit einer Bibliothek arbeiten, die mit Visual C++ 2003 gebaut ist. Ich hab leider nur Visual Studio 2005 und hab daher das Problem, dass es keine Single-Threaded Runtime Libraray mehr gibt. Da die Bibliothek die ich nutzen muss, intern die STL benutzt, bekomm ich, sobald ich selbst versuche die STL zu benutzen, doppelt definierte Symbole:
msvcprtd.lib(MSVCP80D.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_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) ist bereits in gfx.lib(gfx.obj) definiert. msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: char const * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::c_str(void)const " (?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ) ist bereits in gfx.lib(gfx.obj) definiert.Hoffe mir kann jemand helfen
Mfg
Fabian
-
Das läuft nicht. Du kannst zwischen den VC Compilern keinen Code tauschen, außer Du lagerst diesen in DLLs aus und verwendest dort nur PODs.
Es ist nicht garantiert, dass sich das Template Layout der std-Klassen ändert.
Und die Warnungen/Fehler, die Du hier bekommst weisen darauf hin.
-
Also kann ich das Problem nur lösen, indem ich mir VC++ 2003 besorg?