Question :
Vous avez créé une DLL avec une fonction nommée funci( ) et tentent de charger et d'accéder à cette fonction à partir de C . Cependant, vous rencontrez l'erreur "'funci' n'a pas été déclaré dans cette portée." Comment utiliser le pointeur de la DLL pour accéder à la fonction ?
Réponse :
Étape 1 : Charger la DLL
HINSTANCE hGetProcIDDLL = LoadLibrary("C:\path\to\test.dll");
Cela charge la DLL dans le processus mémoire.
Étape 2 : Résoudre l'adresse de la fonction
Vous devez obtenir l'adresse de la fonction à l'aide de GetProcAddress.
typedef int (__stdcall *f_funci)(); // Define function pointer f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Étape 3 : Vérifier l'adresse de la fonction
Vérifiez si l'adresse de la fonction a été obtenue avec succès.
if (!funci) { std::cout << "Could not locate the function" << std::endl; return EXIT_FAILURE; }
Étape 4 : Appeler la fonction
Une fois que vous avez le pointeur de fonction, vous pouvez l'appeler.
std::cout << "funci() returned " << funci() << std::endl;
Étape 5 : Libérer la DLL (Facultatif)
Libérer la DLL gérer en utilisant FreeLibrary() pour décharger la DLL de la mémoire.
FreeLibrary(hGetProcIDDLL);
Conseils supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!