Problem mit lib-Datei
-
Hi @all,
ich versuche gerade eine Klasse in mein Programm einzubauen, die ich bei Codeguru gefunden habe. http://www.codeguru.com/Cpp/G-M/multimedia/video/article.php/c6973/
Beim Compilieren bekomme ich allerdings folgende Fehlermeldung:VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IMediaEventEx
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IMediaControl
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _CLSID_FilterGraph
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IGraphBuilder
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IVMRWindowlessControl
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IVMRFilterConfig
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _CLSID_VideoMixingRenderer
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IBaseFilter
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _CLSID_VideoInputDeviceCategory
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _CLSID_SystemDeviceEnum
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_ICreateDevEnum
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IAMStreamConfig
VMR_Capture.obj : error LNK2001: Nichtaufgelöstes externes Symbol _FORMAT_VideoInfoIch glaube, das ich hier noch die strmiids.lib und die quartz.lib einbinden muß. Aber wie mach ich das unter Visual Studio .net professional?
Ich habe das Programm erst seit kurzem und steh grad irgendwie auf´n Schlauch.Wär echt klasse, wenn mir jemand helfen könnte.

-
Hallo,
Linker-Einstellungen, beschrieben hier:
http://msdn.microsoft.com/library/en-us/vccore/html/_core_..LIB_Files_as_Linker_Input.aspMfG
-
Hi,
erstmal danke für den Tip. Leider hat es bei mir noch nicht so geklappt wie ich will. Was durchaus daran liegen kann, dass ich was falsch mache.
Ich muß quartz.lib und strmiids.lib einbinden.
Also habe ich folgendes gemacht:Projekt/Eigenschaften
Die Konfiguration steht auf Active(Debug) und die Plattform steht auf Active(Win32).
Links in der Baumstruktur bin ich auf Konfigurationseigenschaften/Linker/Eingabe gegangen.
Im rechten Konfigurationsfenster habe ich dann folgendes eingestellt:
Zusätliche Abhängigkeiten: quartz.lib strmiids.lib
Ach ja, bei Linker/Allgemein habe ich Inkrementelles Verknüpfen aktivieren auf ja gestellt.
Jetzt gibt es zwar keine Fehlermeldung beim Compilieren, aber das Prog stürzt direkt beim start ab.
Debug Assertion Failed!
File: dlgdata.cpp
Line: 44Aber was mach ich falsch?

@moderatoren
Wieso kann man hier eigentlich keine Images einfügen! Ein Bild sagt schließlich mehr als 1000 Worte. 
-
naja, das ist ja kein Linker-Fehler mehr, es ist ein Programm(ier)-Fehler, schaue in die Zeile 44 der dlgdata.cpp, und versuche, der Assertion zu entgehen.
MfG
-
Also die dlgdata.cpp ist eine cpp, die nicht von mir geschrieben wurde. Beim start wird sie aber trotzdem ausgeführt.
In der Datei springt das Programm in diese Funktion:HWND CDataExchange::PrepareCtrl(int nIDC) { ASSERT(nIDC != 0); ASSERT(nIDC != -1); // not allowed HWND hWndCtrl; COleControlSite* pSite = NULL; m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl); if (hWndCtrl == NULL) { // Could be a windowless OCX pSite = m_pDlgWnd->GetOleControlSite(nIDC); if (pSite == NULL) { TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC); ASSERT(FALSE); AfxThrowNotSupportedException(); } } m_idLastControl = nIDC; m_bEditLastControl = FALSE; // not an edit item by default return hWndCtrl; }und schmiert bei ASSERT(FALSE); ab.
Aber keine Ahnung warum oder von wo die Funktion aufgerufen wird.
-
es gibt doch eine Aufrufliste im Debug-Modus, über die man erkennen kann, welche Funktionen zum Fehler führen. Man kann aber auch schon erkennen, welchen Fehlergrund es gibt, denn vor dem ASSERT steht die Zeile:
TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC);also, es gibt ein Problem mit einer ID, und einem nicht vorhandenen Control mit dieser ID, das ist doch schon ein Ansatz..
MfG
-
Trikor schrieb:
@moderatoren
Wieso kann man hier eigentlich keine Images einfügen! Ein Bild sagt schließlich mehr als 1000 Worte. 
Probleme mit: Skripten, pornografischen Bildern usw.
-
Hi Probe-Nutzer,
ich habe festgestellt, dass folgendes passiert.
Zu Beginn meinerMeinDialog::OnInitDialog() { CDialog::OnInitDialog(); ...springt das Programm in die CDialog::OnInitDialog();
// datei dlgcore.cpp
diese wird durchlaufen bis// transfer data into the dialog from member variables if (!UpdateData(FALSE)) { TRACE(traceAppMsg, 0, "Warning: UpdateData failed during dialog init.\n"); EndDialog(-1); return FALSE; }Bei der if-Abrage springt er raus in die dlgdata.cpp
HWND CDataExchange::PrepareCtrl(int nIDC) { ASSERT(nIDC != 0); ASSERT(nIDC != -1); // not allowed HWND hWndCtrl; COleControlSite* pSite = NULL; m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl); if (hWndCtrl == NULL) { // Could be a windowless OCX pSite = m_pDlgWnd->GetOleControlSite(nIDC); if (pSite == NULL) { TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC); ASSERT(FALSE); AfxThrowNotSupportedException(); } } m_idLastControl = nIDC; m_bEditLastControl = FALSE; // not an edit item by default return hWndCtrl; }Und stürzt bei ASSERT(FALSE); ab.
Kann es sein, das irgendwas nicht richtig initallisiert ist?
-
hast du meine Antwort oben verstanden? Du mußt herausbekommen, welche Control-ID es ist (z.B. durch Einschalten des TRACE-Modus, dann wird im Debug-Modus diese Zeile ausgegeben, oder du schaust, welchen Wert ID hat beim ASSERT-Ausstieg), bzw. welches Control nicht vorhanden ist. Der DDX-Mechanismus versucht, einen Wert in ein Control mit einer ID zu übertragen, das es nicht gibt
MfG
-
Sorry, ich hatte dein letztes Posting noch nicht gesehen, da ich bei meinem letzten Posting noch einige andere sachen ausprobiert habe.
Ich versuch mal rauszufinden welche ID bzw. welches nicht vorhandene Control es ist.
Wobei ich mich frage, wie ein nicht vorhandenes Control entsteht?
-
So, ich habs gefunden.
Ich hatte vergessen, das ich auf eine Combobox zwei Membervariablen (control und value) gesetzt hatte. Als ich die Combobox entfernt habe, habe ich die Control-Varialble gelöscht, die Value-Variable aber nicht.
Danke für deine Hilfe.