Ich versuche gerade eine
DLL mit dem GCC zu schreiben und sie in einem Delphi Programm zu verwenden:
FirstDLL.c:
Code:
#include <windows.h>
#include "FirstDLL.h"
int
WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return 1;
}
EXPORT int add(int a,int b)
{
return a+b;
}
FirstDLL.h:
Code:
#ifndef FIRSTDLL_H_
#define FIRSTDLL_H_
#endif /*FIRSTDLL_H_*/
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
EXPORT int add(int,int);
Und der Aufruf in Delphi:
Delphi-Quellcode:
type
TAdd = function(a, b: Integer): Integer;
procedure TForm1.Button1Click(Sender: TObject);
var
hLib: THandle;
s: String;
begin
s := IncludeTrailingBackSlash(ExtractFilePath(ParamStr(0)))+ 'FirstDLL.dll';
hLib := LoadLibrary(PChar(s));
if hLib <> 0 then
begin
FreeLibrary(hLib);
end
else
ShowMessage(SysErrorMessage(GetLastError));
end;
Wen ich jetzt aber auf den Button klicke bleibt das Programm bei LoadLibrary einfach hängen und reagiert nicht mehr. Was mache ich da falsch?
Ich habe mal die
DLL mit dem DeopendencyWalker geöffnet. ScreenShot im Anhang. Irgendwie will er eine MSJava.dll einbinden, aber die habe ich auf meinem ganzen System nicht gefunden.