Error bei MFC DLL
-
Zeig mal die Kommandozeilenargumente der Kategorien "C++" und "Linker" (Projekteinstellungen).
-
Du meinst bei c++ algemein die Projektobtionen?
Hier C++/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\Classlib\include" /I "C:\DXSDK\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_MBCS" /D "_USRDLL" /Fp"Debug/test.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /cDie vom Linker:
TIS_UDSHL05.Lib strmiids.Lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\Classlib\Debug/test.pdb" /debug /machine:I386 /def:".\test.def" /out:"..\Classlib\Debug/test.dll" /implib:"..\Classlib\Debug/test.lib" /pdbtype:sept /libpath:"..\Classlib\debug"
-
Die nichtaufgelösten Symbole sind in libc.lib, libcd.lib, libcmt.lib, libcmtd.lib, msvcrt.lib und msvcrtd.lib enthalten.
Für MT [und Debug] versuche mal libcmt[d].lib und msvcrt[d].lib zu den Bibliotheken hinzuzufügen (sind die nicht bei den Standardbibliotheken dabei?).
-
Was soll ich machen? Verstehe grad nicht so ganz dass was du sagst!!!
-
Projekteinstellungen (Debug) -> Linkeroptionen -> Zusätzliche Bibliotheken += libcmtd.lib msvcrtd.lib
probieren.
-
Ich habe das jetzt noch mit eingetragen und bekomme die Fehlermeldungen:
inker-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)
-
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 verwendenzu 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.