hi zusammen
Ich habe das folgende Problem. Ich erstell mit C++ eine
DLL. Die Test-Header Datei der
DLL sieht so aus.
Delphi-Quellcode:
#ifdef DESCREATOR_EXPORTS
#define DESCREATOR_API extern "C" __declspec(dllexport)
#else
#define DESCREATOR_API extern "C" __declspec(dllimport)
#endif
DESCREATOR_API int fnDescreator(int);
Jetzt binde ich die
DLL dynamisch (gleicher Fehler bei statischer Einbindung) so ein.
Delphi-Quellcode:
type
TFunc1=function(i:Integer):Integer;
stdcall;
//...
procedure TFrmDynDLLCall.btnFunc1Click(Sender: TObject);
var
handle:THandle;
f:TFunc1;
begin
handle:=LoadLibrary('
descreator.dll');
if handle<>0
then begin
btnFunc1.Caption:='
Func1(3)';
f:=GetProcAddress(
handle,'
fnDescreator');
lblFunc1.Caption:=IntToStr(f(3));
FreeLibrary(
handle);
end
else
ShowMessage('
LoadLibrary error');
end;
Wenn ich jetzt die Funktion f(3) aufrufen möchte, kommt eine Speicherverletzung, das er diesen und jenen Speicherblock nicht lesen kann.
Sieht jemand von euch den Fehler?
cu Sliver