Hallo,
Ich möchte eine Delphi-
Dll in eine meiner C++-Anwendungen laden. Soweit so einfach. Hier ist der
DLL Code, bis jetzt nur zum Testen mit einem Rückgabewert(26), später kommen noch die Funktionen dazu:
Delphi-Quellcode:
library Screener;
uses
ShareMem,
SysUtils,
Classes,
Jpeg,
Windows,
Graphics;
{$R *.res}
function Dllfunc: Integer; stdcall;
begin
result := 26;
end;
exports Dllfunc;
begin
end.
Jetzt habe ich die
DLL compiliert und rufe sie so aus meinem C++-Programm auf:
Delphi-Quellcode:
typedef int (fnTestd)();
//DLL funktion definieren mit Rückgabewert Integer
HINSTANCE hi;
string Dir = "C:\\Screener.dll";
//Pfad zur DLL, vorerst statisch
hi = ::LoadLibrary(Dir.c_str());
// Liefert gültiges Handle
fnTestd *pTest;
//Zeiger auf DLL Funktion
pTest = (fnTestd * ) ::GetProcAddress(hi,"Dllfunc");
//Liefert auch gültiges Handle
if(pTest != NULL)
//Gültiges Handle bekommen?
{
try
{
int P =(*pTest) (); //P nach Aufruf == 26
FreeLibrary(hi); //Nach Aufruf von FreeLibrary unendlich viele Exceptions, 100% Systemlast
}
catch(...)
{
}
}
Ich habs mal auskommentiert, damit alle wissen was gemeint ist. Bis FreeLibrary funktioniert alles supi. Die Funktion liefert den Rückgabewert 26. Wenn ich dann FreeLibrary aufrufe gibt es unendlich viele Exceptions nacheinander und das Programm stürzt ab. Weiss jemand was falsch ist??