Seite 1 von 1

LoadLibrary und GetProcAdress und DirectSoundCreate

Verfasst: 16.12.2010, 13:46
von stef
Hallo,

nach einer Installation von DirectX9.c funktionieren die Funktionen nicht mehr. Ich versuche bloß die DirectSoundCreate-Funktion auszuführen. Es werden Adressen für beide Aufrufe zurückgegeben, aber wenn ich die DirectSoundCreate-Funktion aufrufe gibt die zurück, dass die Funktion für dieses System nicht implementiert wurde(ErrorCode 120). Mit der nativen Austattung an runtime libraries funktionierte alles einwandfrei. Hat das was mit Unicode oder viren zu tun? Ich benutze Borland Builder 6. Hat das was damit zu tun? Bentuze doch keine statischen Bibliotheken? Ich weiß, dass der Builder Probleme mit VC++-Bibliotheken hat. Das ist hier aber ne DLL, die reingeladen wird. Wenn jemand was weiß bitte melden!


Viele Grüße

Stefan

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Verfasst: 16.12.2010, 19:00
von Sternmull
Hast du mal die Calling Convention überprüft?

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Verfasst: 16.12.2010, 20:04
von stef
Du meinst welche Typen und wieviele Argumente ich übergebe? Das sind einfach die gleichen geblieben. Ist ja praktisch dieselbe Funktion.
Es kann sogar sein dass ich vorher dieselbe Version von DirectX hatte. Aber seit dem Update funktioniert nix mehr.

Grüße,

Stefan

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Verfasst: 16.12.2010, 21:06
von Schrompf
Vermutung: hast Du noch eine DLL oder sowas neben der Exe liegen? Es gibt die seltsamsten Abstürze und Probleme, wenn man die Lib aktualisiert, aber noch eine alte DLL zur Laufzeit hinzuzieht, die dann nicht mehr zum Code passt.

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Verfasst: 16.12.2010, 23:35
von stef
Nein, aber ich habe merkwürdigerweise 3 Versionen von dsound.dll gefunden.
Eine im DllCache. Die soll wohl irgendwie die in System32 ersetzen falls die ausfällt.
Und eine in Windows\RegisteredPackages. Die in System32 ist komischerweise von einem anderen Datum: 2008
als die in RegisteredPackages: 2004
Die beiden haben auch unterschiedliche Größen. Hat das was damit zu tun? Wozu braucht man zwei von den Dingern?

Grüße,
S.

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Verfasst: 18.12.2010, 12:29
von Jiba
Was für einen Cast machst du mit dem Funktionspointer den du von GetProcAddress bekommst?

[EDIT]
Spontan würde mir auch nur einfallen das du die Calling Convention nicht beachtet hast.
Damit sind nicht die Übergabeparameter gemeint sondern der Aufruftyp der Funktion.

In der Doku von DirectX wird die Calling Convention totgeschwiegen.
Der Compiler benutzt implizit __cdecl.
In den Headerdateien wird ein Makro namens WINAPI dafür verwendet was vor der Funktion steht.
du must also nach:
RESULT (WINAPI *)(parameter) casten statt nach
RESULT (*)(parameter)
(Den genauen Prototypen weiss ich nicht da ich grad keine DirectX Header zur Hand habe)
Das hatte Sternmull gemeint.