Je compile avec MinGW un programme sensé créer et charger une DLL. Apparemment la création et le chargement se passe bien, mais GetProcAddress() ne trouve pas la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <windows.h> using namespace std ; typedef int (*MYPROC)(int); static HMODULE hdll = NULL; int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { // création du fichier c qui sera compilé en dll: string dllstr("__declspec( dllexport ) int MyFuncInc(int a) { return ++a; }" ); ofstream out("dll.c"); out << dllstr << endl ; out.close(); // Compilation pour créer la dll: system( "g++ -shared -o dll.dll dll.c" ); // Chargement de la DLL: hdll = LoadLibrary("dll.dll"); if (hdll == NULL) { cout << "LoadLibrary failed" << endl; return 1; } // chargement de la fonction: MYPROC MyFuncInc = (MYPROC)GetProcAddress( hdll, "MyFuncInc" ); if (MyFuncInc == NULL) { cout << "GetProcAddress failed" << endl; return 1; } cout << MyFuncInc(41) << endl ; return 0; }
Partager