Delphi DLL in C++ DLL



  • Hallo,

    ich habe in einer Delphi-Dll eine Funktion, die ich gern in meiner C++ Dll benutzen würde.

    Meine Delphi-Dll sieht (stark vereinfacht) so aus:

    library Number;  
    
    uses
      SysUtils,
      Classes,
      QStdCtrls;
    
    {$R *.res}
    
    function Number(z:Integer) : Integer; stdcall;
    begin
      result := z mod 2;
    end;
    
    exports
      Number;
    
    begin
    end.
    

    Und in C++ will ich das ganze so benutzen:

    HINSTANCE__* hDll;
    typedef int __stdcall n(int z);
    n *Number = NULL;
    
    int GetNumber(int z)
    {
        hDll = LoadLibrary("Number.dll");
        Number = (n*)GetProcAddress(hDll,"Number");
        int i = Number(z);
        FreeLibrary(hDll);
        return i;
    }
    

    Diese Benutzung verursacht jedoch Fehler.
    Kann mir jemand helfen, wie man eine Dll in C++ richtig benutzt?

    Ich benutze Dev-C++ und Delphi 6.

    Danke



  • Hallo

    probier mal

    Number = (n*)GetProcAddress(hDll,"_Number");
    

    Ansonsten debug mal und schau, wo und was für ein Fehler genau kommt.
    Und immer an die Fehlerbehandlung bei WinAPI-FUnktionen denken, bei LoadLibrary zum Beispiel :

    If the function fails, the return value is NULL. To get extended error information, call GetLastError.

    bis bald
    akari



  • Ok ich hab mal geguckt wo der Fehler auftritt und das ist in der Zeile

    FreeLibrary(hDll);

    Lass ich die Zeile weg geht es ohne Fehler, jedoch kann ich dann auf die DLL nicht mehr zugreifen.


Anmelden zum Antworten