DirectShow Beispiel AmCap



  • Hallo,

    ich habe versucht das Beispiel AmCap aus dem SDK v6.1 mit Visual C++ 2008 Express zu compilieren und erhalte folgende Fehler:

    amcap.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __stdcall DbgAssert(wchar_t const *,wchar_t const *,int)" (?DbgAssert@@YGXPB_W0H@Z)" in Funktion ""int __cdecl AppInit(struct HINSTANCE__ *,struct HINSTANCE__ *,int)" (?AppInit@@YAHPAUHINSTANCE__@@0H@Z)".

    1>crossbar.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void __stdcall DbgAssert(wchar_t const *,wchar_t const *,int)" (?DbgAssert@@YGXPB_W0H@Z)".

    1>SampleCGB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void __stdcall DbgAssert(wchar_t const *,wchar_t const *,int)" (?DbgAssert@@YGXPB_W0H@Z)".

    1>crossbar.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl DbgLogInfo(unsigned long,unsigned long,wchar_t const *,...)" (?DbgLogInfo@@YAXKKPB_WZZ)" in Funktion ""public: __thiscall CCrossbar::CCrossbar(struct IPin *,long *)" (??0CCrossbar@@QAE@PAUIPin@@PAJ@Z)".

    1>crossbar.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall CBaseList::CBaseList(wchar_t const *,int)" (??0CBaseList@@QAE@PB_WH@Z)" in Funktion ""public: __thiscall CGenericList<class CRouting>::CGenericList<class CRouting>(wchar_t const *,int,int,int)" (??0?$CGenericList@VCRouting@@@@QAE@PB_WHHH@Z)".

    1>Debug\AmCap.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.

    Hat jemand eine Idee?

    Vielen Dank im Voraus.

    datatom



  • Du musst wohl irgendwas linken, das wird angegeben sein.



  • Hab keine Anleitung gefunden.



  • Es scheint wohl eine Lösung zu geben, doch verstehe ich sie nicht:

    http://social.msdn.microsoft.com/forums/en-US/windowsdirectshowdevelopment/thread/94482b75-3948-4316-96b1-3466e76b32ba/

    Kann mir da jemand weiter helfen?

    Danke im Voraus.



  • Naja, offenbar sollst du als Zeichensatz in deinen Projekteinstellungen den Multibyte-Zeichensatz nehmen, anstatt des Unicode-Zeichensatzes.



  • Hab ich versucht und erhalte 18 Fehler:

    unter anderem:

    error C2664: 'StringCchCatA': Konvertierung des Parameters 3 von 'WCHAR [260]' in 'STRSAFE_LPCSTR' nicht möglich
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    Die Codezeile:

    hr = StringCchCat(tach, _MAX_PATH + 80, gcap.wszCaptureFile);
    


  • Ja, das ist das blöde, wenn man sich im Rest des Projekts auf wchar versteift, mit den Makros wäre man jetzt darum herum gekommen. Bevor du das Projekt jetzt komplett umschreibst, würde ich empfehlen, die Windows-SDK mit den passenden Bibliotheken zu besorgen.



  • Ich habe das SDK zugelinkt aus dem ich das Beispiel habe:

    C:\Programme\Microsoft SDKs\Windows\v6.1\Lib

    und

    C:\Programme\Microsoft SDKs\Windows\v6.1\Include

    Die Fehler bleiben:-(

    Vielleicht liegts an den Einstellungen in VS C++ 2008 Express. Aber wo bekomme ich dazu die Infos her?



  • Ich habe mir jetzt folgendes DirectShow-Beispiel herausgesucht:

    http://www.codeproject.com/KB/audio-video/Cpp_DShowNET_FrameCap.aspx

    Dort werden die Einstellungen in den Eigenschaften von Visual C++ Express erläutert.

    Allerdings weiß ich nicht wie ich folgende Angabe überprüfen kann:

    Make sure Common Language Runtime Support is selected.

    Kann mir bitte jemand weiterhelfen und mitteilen wo ich diese Einstellung überprüfen kann?

    Vielen Dank



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,
    der Thread hat zwar schon einen langen weißen Bart aber ich bin nun just über diesen gestolpert. Da auch im angloamerikanischen Internetsektor keine Lösung für dieses oft gefragte Problem exponiert wurde, hier mal meine Lösung für die vom Threadersteller eingestellte Frage:

    1.) Die WinSDK\Samples\multimedia\directshow\baseclasses erstellen und zwar mit der gleichen Konfiguration wie auch das gewünschte Beispiel erstellt wird.
    Der Pitfall ist nämlich die Defaultkonfiguration: Erstellen->Konfigurationsmanager-> „Debug_MBSC“ – richtig heißen muss es aber wie von allen Beispielen vorausgesetzt: „Debug“


Anmelden zum Antworten