LoadLibrary und GetProcAdress und DirectSoundCreate

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
stef
Beiträge: 3
Registriert: 16.12.2010, 13:36

LoadLibrary und GetProcAdress und DirectSoundCreate

Beitrag 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
Benutzeravatar
Sternmull
Establishment
Beiträge: 264
Registriert: 27.04.2007, 00:30
Echter Name: Til
Wohnort: Dresden

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Beitrag von Sternmull »

Hast du mal die Calling Convention überprüft?
stef
Beiträge: 3
Registriert: 16.12.2010, 13:36

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Beitrag 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
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Beitrag 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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
stef
Beiträge: 3
Registriert: 16.12.2010, 13:36

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Beitrag 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.
Jiba
Beiträge: 31
Registriert: 16.01.2010, 17:42

Re: LoadLibrary und GetProcAdress und DirectSoundCreate

Beitrag 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.
Antworten