Je n'arrive pas � utiliser une DLL compil�e avec MinGW charg�e depuis un programme compil� avec Visual C++. J'utilise LoadLibrary("madll.dll") et GetProcAddress(hDLL,"mafonction"). Apparemment la DLL est bien charg�e mais GetProcAdress ne trouve pas la fonction.
Voici le code source du programme Visual C++, compil� avec prise en charge CLR et jeu de caract�re multioctet:et le code de la DLL compil�e avec MinGW:
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
30
31
32
33
34
35
36
37 #include "stdafx.h" #include "windows.h" using namespace System; typedef int (CALLBACK* LPFNDLLFUNC1)(); HINSTANCE hDLL; // Handle to DLL LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer int uReturnVal; int _tmain(int argc, _TCHAR* argv[]) { uReturnVal = 0; hDLL = LoadLibrary("madll.dll"); if (hDLL != NULL) { lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,"mafonction"); if (!lpfnDllFunc1) { // handle the error Console::WriteLine("Fonction mafonction non trouvée."); FreeLibrary(hDLL); return 1; } else { // call the function uReturnVal = lpfnDllFunc1(); Console::WriteLine("Valeur de retour: {0}",uReturnVal); } } else { Console::WriteLine("DLL non chargée."); } return 0; }----------------------------------------------------
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 extern "C" int __declspec(dllexport) __stdcall mafonction() { return 16; }
Quand je cr�e la dll avec dlltool � partir d'un fichier .def, J'obtiens le message d'erreur au lancement du programme: madll2.dll n'est pas con�u pour s�ex�cuter sous Windows ou il contient une erreur.Et le fichier madll.def:
Code : S�lectionner tout - Visualiser dans une fen�tre � part dlltool --def madll.def --dllname madll.dll --output-lib madll2.dll
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 LIBRARY madll2.dll IMPORTS _imp__mafonction@0 = madll.mafonction EXPORTS mafonction=_mafonction@0
Partager