MFC in einer Statischen Bibliothek verwenden
-
Hallo,
ich benutze in meinem Win32-Konsolen-Projekt die MFC. Leider kann ich sie nur in einer "öffentlichen DLL verwenden", da ich andernfalls ("MFC in einer Statischen Bibliothek verwenden") folgende Fehlermeldung erhalte:
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) ist bereits in LIBCMT.lib(new.obj) definiert.
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) ist bereits in LIBCMT.lib(delete.obj) definiert.
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) ist bereits in libcpmt.lib(newaop.obj) definiert.
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) ist bereits in LIBCMT.lib(delete2.obj) definiert.Kennt jemand die Lösung des Problems?
Danke
-
1. Rebuild des gesamten Projektes.
2. Prüfen ob Du andere Libaries verwendest, die evtl. auch die statische MFC Lib benötigen.Prüfe mit den Linker Settings /VERBOSE wer welche Lib anfordert.
-
Danke,
ich habe die Lösung selbst gefunden: die Reihenfolge, in der die Bibliotheken Nafxcwd.lib und Libcmtd.lib verknüpft wurden, war die Ursache/ Lösung.
Siehe: http://support.microsoft.com/kb/148652/de
Nachtrag: Für die Release muss das "d" vor dem Suffix (steht für "debug") entfernt werden:
Nafxcwd.lib -> Nafxcw.lib
Libcmtd.lib -> Libcmt.lib