Wie eine (BCB)-DLL in PERL eingebunden wird



  • Hallo,

    für die Leute, die sich dafür interessieren, wie man eine DLL in BCB programmiert, die dann in einem PERL-Programm eingebunden wird.

    Das folgende kleine Beispiel zeigt eigentlich deutlich, wie dies gemacht wird. Insofern muß man da eigentlich nicht viel erklären.

    Die BCB-DLL sieht folgendermassen aus:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
    //WINAPI in diesem Fall, damit der Name der Exportfunktion so bleibt, wie er ist, 
    //und nicht mit einem Unterstrich beginnt. Mit Unterstrich funktioniert es nicht.
    //Warum, weiß ich "noch" nicht.
    //(zu sehen in der "Export Table". DLL->Schnellübersicht.)
    
    extern "C" int WINAPI __export Addieren(int, int);
    //---------------------------------------------------------------------------
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
    {
        return 1;
    }
    //---------------------------------------------------------------------------
    int WINAPI Addieren(int Zahl1, int Zahl2)
    {
        return Zahl1+Zahl2;
    }
    

    Nach der Erstellung der DLL, wird sie dann folgendermassen im PERL-Programm aufgerufen:

    use Win32::API;
    $function = Win32::API->new('dllperl', 'Addieren',[I,I],'I');
    
    #Kommentar:
    #'dllperl' ist der Name der DLL. 
    #Sie muß sich im Windows-Verzeichnis befinden, ansonsten Pfadangebe erforderlich.
    #'Addieren' ist die Funktion.
    #[I,I] Eingabeparameter. Hier zwei Integer.
    #'I' ist der Rückgabewert, hier auch Integer.
    
    $return = $function->Call(33, 22);
    print "$return";
    #Der Wert der Variable 'return' is in diesem Fall 55
    

    Hier gibt es weitere Infos, wie eine DLL im Allgemeinen in PERL eingebunden wird.

    Gehört das eigentlich hierher oder ins Webzuegs?

    MfG
    xy


Anmelden zum Antworten