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


  • Mod

    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


Anmelden zum Antworten