Error bei MFC DLL
-
Kann ich dir leider nicht sagen, da ich ein Tutorial für eine Camanbindung mache, dass Tutorial fünktioniert wunderbar als SDI Anwendung mit dem MFC assistenten, doch mein Chef verlangt dass das Programm als DLL läuft jedoch bekomme ich diese Fehler. Hier die Stelle aus dem Tutorial wo die einbindung geschildert ist.
"Instanciating the Grabber
Open the file FirstStepView.h which was created by the AppWizard and add a public member to the class CFirstStepView by inserting the line:DShowLib::Grabber* m_pGrabber;
just below the lines:// Attributes
public:
Open the file FirstStepView.cpp which was created by the AppWizard. Create a new Grabber in the constructor of the CFirstStepView class. The constructor should then look like the following:CFirstStepView::CFirstStepView()
{
// TODO: add construction code herem_pGrabber = new DShowLib::Grabber();
ASSERT( m_pGrabber );
}
The Grabber object has to be deleted if the program terminates. To achieve this, change the destructor of the CFirstAppView class to look like the following:CFirstStepView::~CFirstStepView()
{
delete m_pGrabber;
}
In order to verify the changes you have made so far, please build the project by selecting "Rebuild All" from the "Build" menu."
-
Ist die Headerdatei, wo DShowLib::Grabber deklariert ist, in testview.h inkludiert?
-
Habe sie jetzt noch inkludiert und bekomme jetzt nur noch 6 Fehler Hier sind sie:
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
-
Ist der Konfigurationstyp des Projektes auf .dll gestellt?
/SUBSYSTEM:CONSOLE oder WINDOWS?
Welche Laufzeitbibliothek (ST, MT, etc.)?
-
Es ist als DLL erstellt worden und habe ansonsten nicht an den Konfigurationen geändert müsste also win sein kann dir nicht sagen welche bibiotek wie gucke ich das nach?
-
Wenn DShowLib als lib/DLL vorliegt musst du nicht nur den Header einbinden sondern auch die Lib dazu
-
Zeig mal die Kommandozeilenargumente der Kategorien "C++" und "Linker" (Projekteinstellungen).
-
Sorry liegt alles als .h vor und ist als externe Header eingebunden ins Projekt muss ich die jetzt auch noch lokal einbinden?
Da die Fehlermeldungen immer noch da sind.
-
Kann mir vieleicht jemand Helfen komme echt nicht weiter!
Hiiiiiiiiiiiiiiiiiiiiillllllllllffffffffffffffffeeeeeeeeeeeee!!!!!!!!!!!!!!!!!!!Blind
-
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?