Maison >développement back-end >C++ >Comment puis-je charger et utiliser dynamiquement des fonctions à partir d'une DLL en C ?
La liaison dynamique vous permet de charger une fonction à partir d'une DLL pendant l'exécution, étendant ainsi les fonctionnalités de votre programme. Cet article vous guidera sur la façon d'y parvenir.
La première étape consiste à charger la DLL dans la mémoire du processus en cours. Cela se fait à l'aide de la fonction LoadLibrary :
HINSTANCE hGetProcIDDLL = LoadLibrary("path/to/test.dll");
Une fois la DLL chargée, vous devez localiser l'adresse de la fonction que vous souhaitez appeler. Pour cela, nous utilisons la fonction GetProcAddress :
typedef int (__stdcall *f_funci)(); f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Notez que vous devez définir un type de pointeur de fonction qui correspond à la signature de la fonction exportée. Dans notre cas, il s'agit d'une fonction renvoyant un entier et ne prenant aucun argument.
Pour que la DLL soit chargée avec succès, vous devez exporter la fonction correctement. Ajoutez ce qui suit au code source de votre DLL :
int __declspec(dllexport) __stdcall funci() { // ... }
Une fois l'adresse de la fonction obtenue, vous pouvez l'appeler comme n'importe quelle autre fonction :
std::cout << "funci() returned " << funci() << std::endl;
Pour le nettoyage des ressources, il est recommandé de libérer le handle de la DLL lorsqu'il n'est pas nécessaire plus :
FreeLibrary(hGetProcIDDLL);
En suivant ces étapes, vous pouvez charger et utiliser dynamiquement des fonctions à partir de DLL, améliorant considérablement la flexibilité et l'extensibilité de votre programme.
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!