Dll en c++ dans un programme delphi
Bonjour j'ai crée un programme qui utilise un fonction d'une dll écrite en c++ mais lors du chargement j'ai le message d'erreur "La fonction est introuvable". Voilà mais source:
Code:
1 2 3 4 5
| var
Form1: TForm1;
Fractal: TForm2;
Fcomplexe:THandle;
isDrawable:function(a:double;b:double):Boolean;// c'est la fonction à importer |
Charge la dll et la fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| procedure TForm1.FormCreate(Sender: TObject);
begin
Fcomplexe := LoadLibrary('Fcomplexe.dll');
if Fcomplexe = 0 then begin
raise Exception.Create('Dll non chargé');
end;
@isDrawable:=GetProcAddress(Fcomplexe,'isDrawable');
if @isDrawable=nil then
begin
raise Exception.Create('La fonction est introuvable');
end;
end; |
Et voilà le code source en c++
Dans le fichier .h
Code:
1 2 3 4 5 6 7
| #if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
bool DLLIMPORT isDrawable(double a,double b); |
et dans le fichier *.cpp
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include "E:\programmation\delphi\fractale\dll\MainDll.h"
#include <windows.h>
#include <stdio.h>
/* Externs */
BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason,
LPVOID reserved /* Not used. */ );
/* DllMain Results:
TRUE on success, FALSE on failure. */
BOOL APIENTRY
DllMain (
HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
bool DLLIMPORT isDrawable(double a,double b)
{
return true;
} |
Faut-il faire quelque chose de spéciale à la compilation sous delphi ?
Merci pour votre aide.