Entwickler-Ecke

Sonstiges (Delphi) - Delphi-DLL mit OleVariants in VC6.0 einbinden


alzaimar - Do 24.08.06 09:24
Titel: Delphi-DLL mit OleVariants in VC6.0 einbinden
Hallo!

Ich muss eine in Delphi geschriebene DLL in VC6.0 einbinden. Ich habe nur OleVariant und (32bit) Integer als Übergabeparameter verwendet. Kann mir jemand zeigen, wie die zugehörigen .h-Dateien aussehen müssten?

Die Delphi-DLL exportiert so eine Prozedur:

Delphi-Quelltext
1:
Procedure Foobar (inInt : Integer; inVar : OleVariant; Var outInt : Integer; Var outVar : OleVariant); stdCall;                    

Wie sieht die .h Datei aus? Gibt es irgendwelche fiesen Fallstricke bei der Verwendung von OleVariant in C(++)?

Es wäre wirklich Klasse, wenn mir hier Jemand helfen könnte.

Danke schon mal


alzaimar - Fr 25.08.06 14:51

*Push*


alzaimar - Mo 28.08.06 08:15

letzmaliges *push*

Ist hier Keiner so pervers, sich mit C(++) rumschlagen zu müssen?


Flocke - Mo 28.08.06 08:34

Ich denke mal, das sieht etwa so aus:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
#include <windows.h>
#include <ole2.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

void WINAPI Foobar(int inInt, VARIANT inVar, int *outInt, VARIANT *outVar);

#ifdef __cplusplus
}
#endif /* __cplusplus */


alzaimar - Mo 28.08.06 08:40

Hi

Danke für die schnelle Antwort.
ind Variants einfach nur Records, oder gibt es auch eine Art 'Variant-Manager', den ich verwenden muss? Eigentlich habe ich nur 'Strings' zu übergebe, muss ich das dann mit BSTR machen, oder kann ich einfach irgendwelche PChars nehmen?


delphirocks - Mo 28.08.06 14:15

Wenn du COM verwendest, dann BSTR, sonst normale pchars.
Ich würde einfach eine COM-Komponente erstellen und die Type-Library mittels #import nach VC importieren.

#import "MyTypeLib.tlb" rename_namespace("mytypelib") named_guids
VC gibt erstellt dir dann einen Smartpointer, mit dem du die Funktionen in deiner Dll aufrufen kannst.


alzaimar - Mo 28.08.06 14:20

Nee, das ist ein Wrapper um ein COM-Objekt von mir, bzw. die TSocketConnection-Komponente, also werden die einfach mit PChars basteln müssen. Danke für die Info!