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 mitextern "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