Code: Alles auswählen
Public Declare Function reg_Obj Lib "C:\myProj.dll" (ByRef o as Variant, ByVal v as Variant) as Long
Sub Main
Dim x
Dim z
x= "aaa"
z= "bbb"
a= reg_Obj( x, z)
wenn ich in der Declare-Anweisung "Variant" in "Object" ändere, bekomme ich sofort einen Fehler.
Das eigentlich angestrebte Ziel ist
Code: Alles auswählen
Public Declare Function reg_Obj Lib "C:\myProj.dll" (ByRef o as Variant, ByVal v as Variant) as Long
Sub Main
....
a= reg_Obj( x, ThisComponent)
Mir würde natürlich auch ein Windows-Variant-Parameter genügen (welcher implizit die IDispatch-Schnittstelle enthält).
die DLL ist übrigens in Delphi geschrieben
Code: Alles auswählen
function reg_Obj( var ret:OleVariant; const V:OleVariant):Integer; stdcall;
"stdcall" entnahm ich der libreoffice-Doku, habe es aber auch mit "cdecl" versucht.
beim Aufruf der DLL-function bekomme ich den korrekten Returnwert zurück, aber in den Parametern habe ich bisher nichts sinnvolles übergeben bekommen.
(wenn ich ein COM-Automatisierungs-Objekt instanziert, was ebenfalls in Delphi geschrieben ist, bekomme ich "ThisComponent" sauber als Variant übergeben, nur hilft es mir in diesem Fall nichts, da ich es unbedingt in einer lokalen DLL benötige.)
Hat jemand ne Idee?