Lien dynamique

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Frd
Le #23348321
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 ?
Bertrand Lenoir-Welter
Le #23348811
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.
Thierry
Le #23348891
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
Bertrand Lenoir-Welter
Le #23351051
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é.
Publicité
Poster une réponse
Anonyme