Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lien dynamique

4 réponses
Avatar
Bertrand Lenoir-Welter
Bonjour à tous

Voilà, j'ai besoin d'utiliser une paire de fonctions dans une DLL et je
ne suis pas très rodé à ce genre de sport, utilisant d'habitude des
liens statiques. Dans le .H, les fonctions se présentent comme ça :

SHUTTLESDK_API int WINAPI Shuttle_Register_Callback(SHUTTLEEVENTPROC
shuttleproc, WORD type, WORD devno);
SHUTTLESDK_API int WINAPI Shuttle_Unregister_Callback(WORD type, WORD
devno);

Dans mon code, j'ai donc déclaré des pointeurs sur ces fonctions, de
cette façon :

int (*pShuttle_Register_Callback)(SHUTTLEEVENTPROC shuttleproc, WORD
type, WORD devno);
int (*pShuttle_Unregister_Callback)(WORD type, WORD devno);

HINSTANCE hShuttleDll=LoadLibrary("ShuttleSDK.dll");
if(hShuttleDll) {

pShuttle_Register_Callback=(int(*)(SHUTTLEEVENTPROC,WORD,WORD))GetProcAddress(hShuttleDll,"_Shuttle_Register_Callback");


pShuttle_Unregister_Callback=(int(*)(WORD,WORD))GetProcAddress(hShuttleDll,"_Shuttle_Unregister_Callback");
}

La librairie se charge bien, mais GetProcAddress() retourne NULL pour
chaque fonction.

Question, donc : est-ce que ma syntaxe est correcte ?

Marci pour tout tuyau.

4 réponses

Avatar
Frd
Le 10/05/2011 09:12, Bertrand Lenoir-Welter a écrit :
Bonjour à tous



Bonjour

Voilà, j'ai besoin d'utiliser une paire de fonctions dans une DLL et je
ne suis pas très rodé à ce genre de sport, utilisant d'habitude des
liens statiques. Dans le .H, les fonctions se présentent comme ça :

SHUTTLESDK_API int WINAPI Shuttle_Register_Callback(SHUTTLEEVENTPROC
shuttleproc, WORD type, WORD devno);
SHUTTLESDK_API int WINAPI Shuttle_Unregister_Callback(WORD type, WORD
devno);

pShuttle_Register_Callback=(int(*)(SHUTTLEEVENTPROC,WORD,WORD))GetProcAddress(hShuttleDll,"_Shuttle_Register_Callback");


pShuttle_Unregister_Callback=(int(*)(WORD,WORD))GetProcAddress(hShuttleDll,"_Shuttle_Unregister_Callback");
}

La librairie se charge bien, mais GetProcAddress() retourne NULL pour
chaque fonction.



Pourquoi mettre un "_" devant le nom des fonctions ?
Avatar
Bertrand Lenoir-Welter
Pourquoi mettre un "_" devant le nom des fonctions ?



Je sais pas. Parce que c'est comme ça dans tous les exemples
d'utilisation de GetProcAddress() que j'ai vus. De toute façon, avec ou
sans, ça ne change rien.
Avatar
Thierry
Bertrand Lenoir-Welter écrivait
news:4dc93b9e$0$30754$:

Pourquoi mettre un "_" devant le nom des fonctions ?



Je sais pas. Parce que c'est comme ça dans tous les exemples
d'utilisation de GetProcAddress() que j'ai vus. De toute façon, avec ou
sans, ça ne change rien.



Regarde avec dependancy walker le nom des fonctions dans la DLL. Y'a peut-
etre une differenciation ansi/W même si y'a pas de chaine en parametre mais
peut-etre dans la structure retournée.

--
Vainqueur du 1er WSOFRJCP
Avatar
Bertrand Lenoir-Welter
Regarde avec dependancy walker le nom des fonctions dans la DLL.



Excellent utilitaire. Ça m'a permis de voir que le fichier DLL avait été
endommagé.

Merci pour ce conseil avisé.