Maison >développement back-end >C++ >Comment importer et utiliser des fonctions à partir de DLL en C ?
Importation de fonctions à partir de DLL : un guide complet
Le chargement de bibliothèques de liens dynamiques (DLL) permet à vos programmes C d'utiliser les fonctionnalités de bibliothèques partagées externes . Cependant, pour accéder aux fonctions d'une DLL, il faut une approche différente de celle de l'importation de fonctions à partir de fichiers d'en-tête.
Chargement de la DLL avec LoadLibrary
La fonction LoadLibrary charge une DLL dans la mémoire du processus en cours. Ce processus n'importe pas automatiquement les fonctions définies dans la DLL.
Récupération de l'adresse de la fonction avec GetProcAddress
Une fois la DLL chargée, vous devez obtenir les adresses des les fonctions que vous souhaitez utiliser. Cela se fait à l'aide de la fonction GetProcAddress.
#include <windows.h> typedef int (__stdcall *f_funci)(); // Define function pointer type int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("...") // Retrieve function address f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci"); }
Dans l'extrait de code ci-dessus, nous définissons un type de pointeur de fonction appelé f_funci qui représente la fonction que nous souhaitons importer. La fonction GetProcAddress renvoie l'adresse de la fonction dans la DLL.
Exportation de fonctions à partir de DLL
Pour garantir la bonne exportation des fonctions à partir d'une DLL, utilisez le __declspec( dllexport) et les attributs __stdcall.
int __declspec(dllexport) __stdcall funci() { // ... }
Le L'attribut __declspec(dllexport) indique que la fonction doit être exportée à partir de la DLL et l'attribut __stdcall spécifie la convention d'appel utilisée par la DLL.
Libération du handle de la DLL
Après avoir utilisé les fonctions importées de la DLL, il est recommandé de libérer le handle de la bibliothèque. Ceci est accompli à l'aide de la fonction FreeLibrary.
FreeLibrary(hGetProcIDDLL);
En suivant ces étapes, vous pouvez charger dynamiquement des DLL et accéder à leurs fonctions en C . Cette technique vous permet d'étendre les capacités de vos programmes en utilisant des modules réutilisables sans avoir besoin de liaison statique ou de recompilation.
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!