-
chargement de DLL
Bonjour,
j'aimerais avoir votre aide sur un probleme dont j'ai du mal a m'en sortir tout seul ^^.
le contexte :
je code actuellement un gestionnaire de module pour un projet sur lequel je travaille.
j'ai donc cree un projet de test sur visual studio 8 (Win32 Console Application) et commence a coder le chargement d'un module.
Apres avoir fait quelque recherche, j'ai trouve qu'il fallait utiliser les fonctions LoadLibrary et GeProcAddress.
Voici donc le bout de code que j'essaie de faire marcher :
int main(int ac, char **av)
{
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
hDLL = LoadLibrary("yop.dll");
if (hDLL != NULL)
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, "yop");
if (!lpfnDllFunc1)
{
// handle the error
FreeLibrary(hDLL);
return (0);
}
else
{
// call the function
}
}
};
C'est un code que j'ai trouve sur la documentation microsoft.
Le probleme est que le compilateur ne peut pas identifier les fonctins loadlibrary et GetProcAddress. Ainsi que HINSTANCE et LPFNDLLFUNC1.
Merci de votre aide.
J'espere que vous allez pouvoir m'aider a resoudre ce probleme :).
-
Il faut inclure les headers qui vont bien (donc lire la documentation jusqu'au bout ! )
-
:tagcode:
Et si tu n'as pas les headers correspondants, c'est que tu n'as pas le Platform SDK (à télécharger séparément si tu as VS 2005 Express).
PS: Si ta DLL possède un header et une bibliothèque statique d'importation, tu peux aussi linker ton programme avec ce fichier et tu n'auras plus besoin de LoadLibrary()/GetProcAddress().
Par contre, si la DLL n'est pas trouvée, le programme ne se chargera même pas (alors qu'ici, tu peux traiter l'erreur).