Maison > développement back-end > C++ > Comment accéder aux fonctions DLL à l'aide de LoadLibrary et GetProcAddress ?

Comment accéder aux fonctions DLL à l'aide de LoadLibrary et GetProcAddress ?

Mary-Kate Olsen
Libérer: 2024-12-11 12:36:13
original
546 Les gens l'ont consulté

How to Access DLL Functions Using LoadLibrary and GetProcAddress?

Chargement dynamique de fonctions à partir de DLL

Question :

Comment le handle LoadLibrary peut-il être utilisé accéder aux fonctions définies dans une DLL ?

LoadLibrary charge un DLL en mémoire mais n'importe pas automatiquement ses fonctions. Cela nécessite une deuxième fonction WinAPI : GetProcAddress.

Exemple :

#include <windows.h>
#include <iostream>

typedef int (__stdcall *f_funci)();

int main()
{
  HINSTANCE hGetProcIDDLL = LoadLibrary("C:\Documents and Settings\User\Desktop\test.dll");

  if (!hGetProcIDDLL) {
    std::cout << "could not load the dynamic library" << std::endl;
    return EXIT_FAILURE;
  }

  // Resolve function address using GetProcAddress
  f_funci funci = (f_funci) GetProcAddress(hGetProcIDDLL, "funci");
  if (!funci) {
    std::cout << "could not locate the function" << std::endl;
    return EXIT_FAILURE;
  }

  std::cout << "funci() returned " << funci() << std::endl;
  
  // Free the library handle when no longer needed
  FreeLibrary(hGetProcIDDLL);
  
  return EXIT_SUCCESS;
}
Copier après la connexion

Export Dll :

Assurer la fonction est correctement exporté depuis la DLL à l'aide de __declspec(dllexport) et __stdcall attributs :

int __declspec(dllexport) __stdcall funci() {
   // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal