Structure
| main.cpp
| Love.dll
Code
//main.cpp
#include <windows.h>
#include <iostream>
typedef const char* (*DLLStoreLove)(const char*); // définir le type de la fonction
int main()
{
// charger la DLL
HINSTANCE DLL = LoadLibrary(L"Love.dll");
if (DLL == NULL) {
std::cout << "Erreur lors du chargement de la DLL." << std::endl;
return 1;
}
// récupérer l'adresse de la fonction "StoreLove"
DLLStoreLove StoreLove = (DLLStoreLove)GetProcAddress(DLL, "StoreLove");
if (StoreLove == NULL) {
std::cout << "Erreur lors de la récupération de la fonction StoreLove." << std::endl;
return 1;
}
// utiliser la fonction "StoreLove"
const char* result = StoreLove("<3 <3 <3");
std::cout << "Résultat de l'appel à StoreLove : " << result << std::endl;
// décharger la DLL
FreeLibrary(DLL);
return 0;
}
Remarques
- On peut charger une DLL 64 bit (PE32+) dans un programme 64bit
- On peut charger une DLL 32 bit (PE32) dans un programme 32bit
Ressources
https://learn.microsoft.com/en-us/cpp/build/linking-an-executable-to-a-dll?view=msvc-170#determining-which-linking-method-to-use