Bonjour,
J'ai un exemple simple de DLL C++ (A.dll) dont le fichier header est décrit ci-dessous :
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //A.h #ifndef ADLL_EXPORTS #define ADLL_EXPORTS #endif #if defined( ADLL_EXPORTS) #define ADLL_API __declspec(dllexport) #else #define ADLL_API __declspec(dllimport) #endif extern "C" ADLL_API void __cdecl run(void);
Lorsque je fais un appel de la DLL à partir de mon programme de manière dynamique, la fonction "run" est chargée et exécutée :
Par contre, quand l'appel est statique, j'ai un message m'indiquant que le point d'entrée de la fonction run est introuvable :
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 var Form1: TForm1; xMainPrc: procedure; cdecl ; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var a:integer; handle : THandle; begin handle := LoadLibrary('A.dll'); if handle <> 0 then begin @xMainPrc := GetProcAddress(handle, 'run'); if @xMainPrc <> nil then begin MessageBox(0,'Function Loaded', 0, 0); xMainPrc(); end; end; end;
Pouvez vous m'indiquer s'il vous plaît où se situe mon erreur dans l'appel statique de la DLL ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 path='A.dll' ; procedure run();cdecl;external path; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin run; end;
Merci
Partager