Error bei MFC DLL



  • Gut, dann wirf die libcmtd.lib jetzt wieder raus.



  • Habe ich getan bekomme nun 8 Fehler 2 Warnungen und unter den Fehlermeldungen sind auch wieder die alten. Hier die Fehlermeldungen:

    Linker-Vorgang läuft...
    nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 bereits in msvcrtd.lib(dllmain.obj) definiert
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in msvcrtd.lib(MSVCRTD.dll) definiert
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 bereits in msvcrtd.lib(dllmain.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in msvcrtd.lib(MSVCRTD.dll) definiert; zweite Definition wird ignoriert
       Bibliothek ..\Classlib\Debug/test.lib und Objekt ..\Classlib\Debug/test.exp wird erstellt
    nafxcwd.lib(appcore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol ___argv
    nafxcwd.lib(appcore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol ___argc
    nafxcwd.lib(filelist.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __mbctype
    nafxcwd.lib(timecore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __mbctype
    nafxcwd.lib(apphelp.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __mbctype
    ..\Classlib\Debug/test.dll : fatal error LNK1120: 3 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    


  • Dann schreib die libcmtd.lib wieder rein und wirf die msvcrtd.lib raus.



  • sind noch 3 Fehler Fehler:

    Linker-Vorgang läuft...
    nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert; zweite Definition wird ignoriert
       Bibliothek ..\Classlib\Debug/test.lib und Objekt ..\Classlib\Debug/test.exp wird erstellt
    LINK : warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    ..\Classlib\Debug/test.dll : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
    Fehler beim Ausführen von link.exe.
    
    test.dll - 3 Fehler, 3 Warnung(en)
    


  • Und wenn du jetzt die nafxcwd.lib zu der Ignorierliste hinzufügst?



  • Wie geht das habe ich noch nie gemacht!!!!!!!!!!!!!!!



  • Projekteinstellungen (Debug) -> Linkeroptionen -> Bibliothek ignorieren



  • Das mache ich glaube wieder Rückgängig 134 Fehler und 1 Warnung



  • Weiss noch jemand ne andere möglichkeit



  • blind schrieb:

    Das mache ich glaube wieder Rückgängig 134 Fehler und 1 Warnung

    Nur so nebenbei:
    die Anzahl der Fehler ist nicht unbedingt entscheidend. Manchmal fehlt nur ein Semikolon und das verursacht 120 Fehler. Wichtig sind die ersten ein, zwei aufgelisteten Fehler, aber was darin steht, kann man momentan nur orakeln.



  • Das Waren Fehler wegen necht externen aufgelösten simbolen die mit der .h zusammen hingen sind jetzt wieder bei den 3 Fehlern und 3 Warnungen angekommen die ich am anfang hatte.

    nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert; zweite Definition wird ignoriert
       Bibliothek ..\Classlib\Debug/test.lib und Objekt ..\Classlib\Debug/test.exp wird erstellt
    LINK : warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    ..\Classlib\Debug/test.dll : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
    Fehler beim Ausführen von link.exe.
    
    test.dll - 3 Fehler, 3 Warnung(en)
    


  • Probier mal das

    warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    

    zu den Linkeroptionen (Kommandozeile) hinzuzufügen.



  • Habe deine Vorschlag ausgefühert und bin nun soweit:

    Linker-Vorgang läuft...
    nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert; zweite Definition wird ignoriert
       Bibliothek ..\Classlib\Debug/test.lib und Objekt ..\Classlib\Debug/test.exp wird erstellt
    ..\Classlib\Debug/test.dll : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
    Fehler beim Ausführen von link.exe.
    
    test.dll - 3 Fehler, 2 Warnung(en)
    


  • Schalte mal die Linkeroption "Ausgabe erzwingen" an.



  • Dann kommen diese Fehlermeldungen:

    inker-Vorgang läuft...
    LINK : warning LNK4075: /INCREMENTAL wird aufgrund der Angabe von /FORCE ignoriert
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 bereits in libcmtd.lib(dllmain.obj) definiert; zweite Definition wird ignoriert
    nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in libcmtd.lib(dbgdel.obj) definiert; zweite Definition wird ignoriert
       Bibliothek ..\Classlib\Debug/test.lib und Objekt ..\Classlib\Debug/test.exp wird erstellt
    ..\Classlib\Debug/test.dll : warning LNK4088: Anwendung wurde gemaess der Option /FORCE generiert; Anwendung kann vielleicht nicht ausgefuehrt werden
    


  • Die DLL sollte jetzt erzeugt sein. Funktioniert sie?


Anmelden zum Antworten