C++-DLL in VBA funktioniert nicht (mit Openoffice Calc gehts)
-
Hallo,
ich habe folgendes Problem:
Ich habe eine DLL in C++ geschrieben und versuche diese jetzt mit folgender Zeile in VBA anzubinden:Declare Function FindBWFile Lib "C:\Prokas2Tools.dll" ( _ ByVal Path As String, _ ByVal SearchString As String, _ ByRef RetVal As String) As Integer
Wenn ich diese Funktion jetzt aufrufe, stürzt Excel mit der Meldung "Microsoft Excel hat ein Problem festgestellt und muss beendet werden." ab. Der gleiche Code (die Declare-Anweisung) funktioniert hingegen unter OpenOffice Calc tadellos.
Hier nochmal der Funktionsheader der Funktion in der DLL:
__declspec(dllexport) int __stdcall FindBWFile(char *szPath, char *szSearchString, char szReturnFile[]);
Ich hoffe ihr könnt mir helfen.
Grüße
-
Ohne auf die Interoperabilität selbst eingehen zu können, sind
char * arg
undchar arg[]
identisch. Also versuch mal, alle drei Paramater ByVal oder aber alle drei ByRef zu deklarieren.
-
komischerweise funktioniert die Funktion aus der DLL in Excel-VBA genau wie ich das wollte wenn ich jeden Parameter "ByVal" deklariere. Wenn jeder Parameter ByRef deklariert ist, stürtzt Excel weiterhin ab.
Wenn ich in Openoffice jeden Parameter ByVal deklariere, wird der Zurückgegebene String (im 3. Parameter) nicht überschrieben, wie es mit einem Parameter, der ByVal übergeben wird, auch sein sollte.
Wenigstens funktioniert es, wenn es auch unlogisch ist.