Alors dans ce cas, la marche à suivre est la suivante:
1) Charger la dll en mémoire, à l'aide de LoadLibrary()
1 2 3 4 5
| HMODULE hModule = LoadLibrary("le path de la dll");
if ( hModule == NULL )
{
// la dll n'a pas pu être chargée, gérer l'erreur
} |
2) Appeler la fonction souhaitée
Arf, j'ai oublié, il nous faut la signature des fonctions définies dans le .def pour pouvoir les appeler. Autrement dit, il nous faut le fichier d'en-tête (.h).
Prenons par exemple le .def suivant:
qui correspond à l'en-tête suivant:
int unefonction(float f);
Pour appeler unefonction, il faut faire ainsi:
1 2 3 4 5 6 7 8 9
|
// on défini le type de la fonction a appeler pour simplifier le code:
typedef int (WINAPI *UnTypeDeFonction) (float f);
// on récupère un pointeur sur cette fonction
UnTypeDeFonction lafonction = (UnTypeDeFonction)GetProcAddress(hm, "unefonction");
//on appelle la fonction:
int unint = lafonction(3.45); |
Remarque: tout ceci est trés bien expliqué dans le lien fourni par neuro6
Partager