Problem mit DirecSoundEnumerate



  • Hallo zusammen.
    Wie der Tietel sicher schon verrät, habe ich ein Problem mit der Funktion HRESULT DirectSoundEnumerate(
    LPDSENUMCALLBACK lpDSEnumCallback,
    LPVOID lpContext)

    Hier ist erstmal der Quellcode:

    // Rückruffunktion für das Abzählen der Soundtreiber
    BOOL CALLBACK DirectSoundEnumerateCallback(LPGUID pGUID,
    										   LPCSTR pcDescription,
    										   LPCSTR pcModule,
    										   void* pContext)
    {
    	//...
    	return TRUE;
    }
    
    // ******************************************************************
    // Abzählen der DirectSound-Treiber
    bool EnumSoundDrivers(HWND hDlg)
    {
    	DirectSoundEnumerate(DirectSoundEnumerateCallback, (void*)(hDlg));
    
    	return true;
    }
    

    VC++ sagt mir allerdings, dass das erste Argument welches ich an DirectSoundEnumerate übergebe, also DirectSoundEnumerateCallback nicht mit dem gefordertem Datentyp übereinstimmt. In der MSDN ist dies hier jedoch so beschrieben, wie ich es geschreieben habe.

    Ich hoffe mir kann jemand helfen.



  • Sind das hier freistehende Funktionen oder Methoden einer Klasse? Ansonsten könntest du mal bitte die exakte Fehlermeldung liefern (daraus kann man meistens auch ableiten, woran genau sich der Compiler stört).



  • Es handelt sich hierbei um freistehende Funktionen, welche später über eine DLL zur verfügung stehen sollen. Hier ist die genaue Fehlermeldung:

    1>m:\_myprojects\___engines\3dgameengine\3dgameengine\configuration.cpp(651): error C2664: 'DirectSoundEnumerateW': Konvertierung des Parameters 1 von 'BOOL (__stdcall *)(LPGUID,LPCSTR,LPCSTR,void *)' in 'LPDSENUMCALLBACKW' nicht möglich
    1>          Keine Funktion mit diesem Namen im Gültigkeitsbereich stimmt mit dem Zieltyp überein
    

    Wenn ich eine Typumwandlung im C-Styl nach LPDSENUMCALLBACK vornehme, dann bekomme ich eine Fehlermeldung vom Linker:

    1>     Bibliothek "M:\_MyProjects\___Engines\3DGameEngine\Debug\3DGameEngine.lib" und Objekt "M:\_MyProjects\___Engines\3DGameEngine\Debug\3DGameEngine.exp" werden erstellt.
    1>Configuration.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DirectSoundEnumerateW@8" in Funktion ""enum geResult __cdecl EnumSoundDrivers(struct HWND__ *)" (?EnumSoundDrivers@@YA?AW4geResult@@PAUHWND__@@@Z)".
    1>M:\_MyProjects\___Engines\3DGameEngine\Debug\3DGameEngine.dll : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
    

Anmelden zum Antworten