C++ DLL mit VBA aufrufen



  • Hallo zusammen,

    ich möchte aus einem Excel bzw. VBA projekt eine C++ DLL aufrufen und starten.
    Weiß jemand, wie ich die Schnittstellen in C++ (BCB 6) gestalten muss. Hab es mit

    extern "C" __declspec(dllexport) void StartDlg()
    {
    ...
    }
    

    probiert aber da findet Excel nicht den Prozedureinsprungspunkt. Hat jemand Erfahrung damit? Weiß jemand, welche Variablentypen übergeben werden können?

    Danke im Vorraus



  • Hallo

    Das was du da geschrieben hast sollte von C++ Seite aus ausreichen.
    Du darfst allerdings nicht vergessen das die so exportieten Funktionen beim Importieren mit einem beginnenden "_" angesprochen werden müßen. In deinem Fall also "_StartDlg"

    Als Variablentypen darfst du ausschließlich C-Typen verwenden, nichts aus dem C++ oder gar VCL-Bereich.

    bis bald
    akari



  • wie sieht denn deine VBA Funktion aus?



  • Ich habe das häufig gemacht, klappt gut mit dem Aufruf aus VB/VBA.
    Dein Code ist schon richtig, aber noch folgender Trick: Project - Options - Reiter Advanced Compiler - Calling Convention auf Standard Call setzen. Die Funktion braucht dann nicht mit Unterstrich aufgerufen werden sondern mit ihrem normalen Namen.



  • Das Problem hatte ich auch vor kurzen.

    Ich habe das dann so gelöst:

    C++

    extern "C" _declspec(dllexport) BOOL _stdcall AlphaPort(unsigned char Port)
    

    VBA

    Private Declare Function AlphaPort Lib "AlphaCom.dll" (ByVal Port As Byte) As Boolean
    


  • Jo besten Dank, das funktioniert tatsächlich.

    Gruss Sebastian


Anmelden zum Antworten