Appel dans un programme Delphi d'une DLL développée en C++
Bonjour,
J'ai un exemple simple de DLL C++ (A.dll) dont le fichier header est décrit ci-dessous :
Code:
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 :
Code:
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; |
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:
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; |
Pouvez vous m'indiquer s'il vous plaît où se situe mon erreur dans l'appel statique de la DLL ?
Merci