Error bei MFC DLL



  • Hi Leute!

    Habe große Probleme und zwar Bekomme ich ca 100Fehlermeldungen beim erstellen der MFC DLL. Ich habe eine Klasse CTestView die von CView abgeleitet istr und möchte nun einen Grabber einbauen.

    Code der Ersten Fehlermeldungen:

    class CTestView : public CView
    {
    protected:
    	CTestView();           // Dynamische Erstellung verwendet geschützten Konstruktor
    	DECLARE_DYNCREATE(CTestView)
    
    	DShowLib::Grabber* m_pGrabber;
    // Attribute
    public:
    

    Fehlermeldungen dafür:

    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2653: 'DShowLib' : Keine Klasse oder Namespace
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2143: Syntaxfehler : Fehlendes ';' vor '*'
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2501: 'Grabber' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2501: 'm_pGrabber' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2653: 'DShowLib' : Keine Klasse oder Namespace
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2143: Syntaxfehler : Fehlendes ';' vor '*'
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2501: 'Grabber' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\the imaging source europe gmbh\ic imaging control 1.4\test\testview.h(19) : error C2501: 'm_pGrabber' : Fehlende Speicherklasse oder Typbezeichner
    

    Danke schonmal imvoraus!!!!
    Blind



  • Wie sind DShowLib und DShowLib::Grabber definiert?



  • 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 here

    m_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 /c
    

    Die 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)
    

Anmelden zum Antworten