jokey2
Erfahrenes Mitglied
Hallo Leute!
Ich habe hier ein Konsolenprojekt, welches MFC unterstützt. Im gleichen Arbeitsbereich habe ich eine Bibliothek ohne MFC, welche STL-Elemente verwendet. Die Konsolenanwendung soll diese Bibliothek einbinden. Sowohl die Bibliothek als auch die Anwendung lassen sich problemlos kompilieren.
Das Problem tritt beim Linken auf:
Wenn ich meine Applikation linken will, kommen folgende Fehlermeldungen:
Wenn ich gemäß der Warnungen die beiden Bibliotheken rausnehme, wird's noch wilder, da die msvcrtd.lib ja benötigt wird. Jetzt habe ich die libcd.lib und die libcpd.lib rausgenommen und bekomme beim Linken folgende Fehlermeldungen:
Das sieht zwar schon wesentlich besser aus, aberirgendwie kann ich damit nichts anfangen. Ich kenne diese Symbole nicht, kenes davon verwende ich explizit.
Für mich sieht das ziemlich danach aus, als könnte ich eine Bibliothek, die STL-Elemente verwendet nicht in einer Applikation verwenden, die MFC verwendet. Aber eigentlich kanns das ja nicht sein.
Es würde mit echt sehr helfen, wenn jemand eine Lösung dafür wüsste, wie ich meine Lib in meiner Applikation verwenden kann.
Ich habe hier ein Konsolenprojekt, welches MFC unterstützt. Im gleichen Arbeitsbereich habe ich eine Bibliothek ohne MFC, welche STL-Elemente verwendet. Die Konsolenanwendung soll diese Bibliothek einbinden. Sowohl die Bibliothek als auch die Anwendung lassen sich problemlos kompilieren.
Das Problem tritt beim Linken auf:
Wenn ich meine Applikation linken will, kommen folgende Fehlermeldungen:
Code:
ibcpd.lib(ios.obj) : error LNK2005: "public: void __thiscall std::ios_base::clear(int,bool)" (?clear@ios_base@std@@QAEXH_N@Z) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(ios.obj) : error LNK2005: "public: virtual __thiscall std::ios_base::~ios_base(void)" (1ios_base@std@@UAE@XZ) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(ios.obj) : error LNK2005: "protected: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@IAEXXZ) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(ios.obj) : error LNK2005: "protected: void __thiscall std::ios_base::_Init(void)" (?_Init@ios_base@std@@IAEXXZ) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(locale0.obj) : error LNK2005: "public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int,bool)const " (?_Getfacet@locale@std@@QBEPBVfacet@12@I_N@Z) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(locale0.obj) : error LNK2005: "public: bool __thiscall std::locale::_Iscloc(void)const " (?_Iscloc@locale@std@@QBE_NXZ) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(void)" (?_Init@locale@std@@CAPAV_Locimp@12@XZ) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(locale.obj) : error LNK2005: "public: class std::locale & __thiscall std::locale::_Addfac(class std::locale::facet *,unsigned int,unsigned int)" (?_Addfac@locale@std@@QAEAAV12@PAVfacet@12@II@Z) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(locale.obj) : error LNK2005: "public: __thiscall std::_Locinfo::_Locinfo(char const *)" (0_Locinfo@std@@QAE@PBD@Z) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(locale.obj) : error LNK2005: "public: __thiscall std::_Locinfo::~_Locinfo(void)" (1_Locinfo@std@@QAE@XZ) bereits in msvcprtd.lib(MSVCP60D.dll) definiert
libcpd.lib(xwctomb.obj) : error LNK2005: __Getcvt bereits in msvcprtd.lib(MSVCP60D.dll) definiert
LIBCD.lib(dbgheap.obj) : error LNK2005: _free bereits in msvcrtd.lib(MSVCRTD.dll) definiert
LIBCD.lib(crt0dat.obj) : error LNK2005: _exit bereits in msvcrtd.lib(MSVCRTD.dll) definiert
LIBCD.lib(crt0dat.obj) : error LNK2005: __exit bereits in msvcrtd.lib(MSVCRTD.dll) definiert
LIBCD.lib(strcat.obj) : error LNK2005: _strcpy bereits in msvcrtd.lib(MSVCRTD.dll) definiert
LIBCD.lib(crt0init.obj) : error LNK2005: ___xc_z bereits in msvcrtd.lib(cinitexe.obj) definiert
LIBCD.lib(crt0init.obj) : error LNK2005: ___xc_a bereits in msvcrtd.lib(cinitexe.obj) definiert
LIBCD.lib(crt0init.obj) : error LNK2005: ___xi_z bereits in msvcrtd.lib(cinitexe.obj) definiert
LIBCD.lib(crt0init.obj) : error LNK2005: ___xi_a bereits in msvcrtd.lib(cinitexe.obj) definiert
LIBCD.lib(winxfltr.obj) : error LNK2005: __XcptFilter bereits in msvcrtd.lib(MSVCRTD.dll) definiert
LIBCD.lib(crt0.obj) : error LNK2005: _mainCRTStartup bereits in msvcrtd.lib(crtexe.obj) definiert
LIBCD.lib(fflush.obj) : error LNK2005: _fflush bereits in msvcrtd.lib(MSVCRTD.dll) definiert
LINK : warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
LINK : warning LNK4098: Standardbibliothek "LIBCD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
Code:
MakeFileParser.lib(MFParser.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "__int64 const std::_Fpz" (?_Fpz@std@@3_JB)
MakeFileParser.lib(MFParser.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "private: static class std::locale::_Locimp * std::locale::_Locimp::_Global" (?_Global@_Locimp@locale@std@@0PAV123@A)
MakeFileParser.lib(MFParser.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class std::locale::id std::ctype<char>::id" (?id@?$ctype@D@std@@2V0locale@2@A)
MakeFileParser.lib(MFParser.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "private: static int std::locale::id::_Id_cnt" (?_Id_cnt@id@locale@std@@0HA)
MakeFileParser.lib(MFParser.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "private: static short const * const std::ctype<char>::_Cltab" (?_Cltab@?$ctype@D@std@@0PBFB)
Für mich sieht das ziemlich danach aus, als könnte ich eine Bibliothek, die STL-Elemente verwendet nicht in einer Applikation verwenden, die MFC verwendet. Aber eigentlich kanns das ja nicht sein.
Es würde mit echt sehr helfen, wenn jemand eine Lösung dafür wüsste, wie ich meine Lib in meiner Applikation verwenden kann.