Einzelnen Beitrag anzeigen

seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#1

Delphi-Dll in C++-Anwendung laden

  Alt 26. Aug 2005, 20:57
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??
  Mit Zitat antworten Zitat