dshow cinterface definieren
-
1>c:\dokumente und einstellungen\administrator\desktop\getvideodevicename\devlist\devlist.cpp(34) : error C2039: 'Release' : is not a member of 'IEnumMoniker'
1> c:\programme\microsoft sdks\windows\v6.0a\include\objidl.h(2215) : see declaration of 'IEnumMoniker'
1>c:\dokumente und einstellungen\administrator\desktop\getvideodevicename\devlist\devlist.cpp(40) : error C2039: 'Release' : is not a member of 'IEnumMoniker'
1> c:\programme\microsoft sdks\windows\v6.0a\include\objidl.h(2215) : see declaration of 'IEnumMoniker'
1>c:\dokumente und einstellungen\administrator\desktop\getvideodevicename\devlist\devlist.cpp(53) : error C3861: 'IID_PPV_ARGS': identifier not found
1>c:\dokumente und einstellungen\administrator\desktop\getvideodevicename\devlist\devlist.cpp(58) : error C2039: 'CreateClassEnumerator' : is not a member of 'ICreateDevEnum'
1> c:\programme\microsoft sdks\windows\v6.0a\include\strmif.h(972) : see declaration of 'ICreateDevEnum'
1>c:\dokumente und einstellungen\administrator\desktop\getvideodevicename\devlist\devlist.cpp(63) : error C2039: 'Release' : is not a member of 'ICreateDevEnum'
1> c:\programme\microsoft sdks\windows\v6.0a\include\strmif.h(972) : see declaration of 'ICreateDevEnum'
1>c:\dokumente und einstellungen\administrator\desktop\getvideodevicename\devlist\devlist.cpp(79) : error C2039: 'Next' : is not a member of 'IEnumMoniker'
1> c:\programme\microsoft sdks\windows\v6.0a\include\objidl.h(2215) : see declaration of 'IEnumMoniker'
-
Soll das jetzt ein Scherz sein?
-
Warum? Bin ein Anfänger weis wirklich nicht was du meinst!
Wenn ich ein CPP Project mache mit precompiled header, dann funktioniert es!
-
Vielleicht solltest du versuchen ein C Projekt zu machen, mit oder ohne Precompiled-Header, aber auf jeden Fall ohne CPP (=C++) Files zu verwenden?
-
Also Direct Show ohne C++ abzuwickeln ist schon ein mutiges Unterfangen... und ziemlich sinnlos.
-
Martin Richter schrieb:
Also Direct Show ohne C++ abzuwickeln ist schon ein mutiges Unterfangen... und ziemlich sinnlos.
Er will doch keine Filter bauen, sondern nur ein paar Methoden aufrufen. Da ist es doch ganz egal, ob er nun C++ oder C verwendet. Soviel mehr zu tippen ist da auch nicht.
Die Frage ist doch eher: Was wird denn jetzt eigentlich verwendet? Da nach C gefragt wird, die Dateien aber .cpp heißen, verwirrt mich das sehr viel mehr...
-
Ja! Aber DriectShow setzt sich aus Intrfaces zusammen und Intrfaces wie IEnumMoniker in C zu bedienen gehört schon zu den höheren Weihen eine "C" Programmierers und vor allem gehört "viel Verständnis" dazu.
Ich würde soetwas grundsätzlich nur noch aus C++ bedienen.
Und wie man schon sieht, hat der OP vermutlich gar keine Ahnung, dass der Code, den er (evtl.) kopiert hat C++ ist!

-
Martin Richter schrieb:
Ja! Aber DriectShow setzt sich aus Intrfaces zusammen und Intrfaces wie IEnumMoniker in C zu bedienen gehört schon zu den höheren Weihen eine "C" Programmierers und vor allem gehört "viel Verständnis" dazu.
Ich würde soetwas grundsätzlich nur noch aus C++ bedienen.
Das sieht doch aber in C genau so aus, wie es in C++ auch aussieht. Du musst doch lediglich den This-Pointer händisch übergeben (na gut, eine zusätzliche Indirektion beim Aufruf gibt's auch noch). Man sollte sich lieber überlegen, ob man sich DirectShow als Anfänger überhaupt antun möchte, egal ob C oder C++. Das Verständnis von IEnumMoniker braucht es in beiden Varianten.
Martin Richter schrieb:
Und wie man schon sieht, hat der OP vermutlich gar keine Ahnung, dass der Code, den er (evtl.) kopiert hat C++ ist!


-
hustbaer schrieb:
...aber auf jeden Fall ohne CPP (=C++) Files zu verwenden?
Bis vor ganz kurzer Zeit habe ich auch gedacht, dies sei die einzige Möglichkeit. Ab Version 2003 (?) des VC gibt es aber bei den Compileroptionen die Schalter (/TP) und (/TC).
Es würde aber nichts daran ändern, die Fehlermeldungen lassen auf C++-Code schließen, der durch den C89-VCompiler gejagt wird.
Bspw. darf nicht IEnumMoniker::Release (IUnknown::Release) aufgerufen werden, sondern das C-Interface der jeweiligen Klassen, bei IEnumMoniker alsoULONG ( STDMETHODCALLTYPE *Release )( IEnumMoniker * This);Du müsstest das Ganze also entweder umschreiben, oder bei C++ (mit oder ohne Precompiled Header) bleiben. Letzteres halte ich in dem Context auch für das Beste.
-
Genau dass wollte ich wissen. Besten Dank