Funktion mit Parameter void** in C# importieren

06/05/2009 - 15:17 von sky4walk | Report spam
Hallo,

ich habe ein C-Funktion int func(void**a) in einer Dll, die ich in C#
importieren will. Leider weiss ich nicht, wie ich Parameter
importieren kann.

Die C-Funktion func() sieht in C ungefàhr so aus:

int func(void**a)
{
*a = new KlasseA();
return 1;
}

Aufruf der C-Funktion func() in C:

void* a;
func(&a);

In der C# managed Umgebung wird 'a' lediglich zum Durchreichen an
andere unmanaged funktionen gespeichert.

Vielen Dank
André Betz
 

Lesen sie die antworten

#1 Günter Prossliner
06/05/2009 - 16:08 | Warnen spam
Hallo Andre!

ich habe ein C-Funktion int func(void**a) in einer Dll, die ich in C#
importieren will.

...

In der C# managed Umgebung wird 'a' lediglich zum Durchreichen an
andere unmanaged funktionen gespeichert.



Dann wàre ein "out IntPtr" angebracht:

[DllImport(...)]
static extern void func(out IntPtr a);

Um diese dann einer Funktion zu übergeben verwendest Du dann einfach
"IntPtr" direkt:

[DllImport(...)]
static extern void func2(IntPtr a);


Aufruf:

IntPtr a;
func(out a);
func2(a);



OK?
mfg GP

Ähnliche fragen