Wie importiere ich void * C API in C #?

8

Wie würde diese C-API-Deklaration in C # importiert?

%Vor%

Ich bin soweit gekommen:

%Vor%

Natürlich wird in C # das "void *" nicht kompiliert.

Googling gibt an, dass es als "Objekt" übersetzt werden soll. Was scheint, sollte es funktionieren. Andere geben jedoch an, dass "Void * in C / C ++ - Begriffen als Funktionszeiger bezeichnet wird, der in C # -Ausdrücken ein Delegierter ist". Das macht hier keinen großen Sinn, an was würde es delegieren? Einige ähnliche Aufrufe für andere APIs, die beim Googlen gefunden werden, verwenden andere Funktionen in der jeweiligen API. Aber in dieser API wäre kein anderer Aufruf sinnvoll.

Die Dokumentation zum Aufruf zeigt ein Beispiel:

%Vor%

Was zu zeigen scheint, dass sogar ein statischer Wert übergeben werden könnte.

Es wird mit dem Objekt anstelle des void * kompiliert. Ich weiß nicht, ob das richtig ist und ich hatte keine Gelegenheit, es zu testen (Lizenzproblem).

    
Mike Chess 06.02.2009, 19:21
quelle

3 Antworten

13

Für den void * Parameter können Sie einfach ein IntPtr

verwenden %Vor%     
JaredPar 06.02.2009, 19:26
quelle
1

Sie können void * auch verwenden, wenn Sie Ihre Klasse als unsicher markieren.

Es hängt wirklich davon ab, nach was die API in diesem Parameter sucht.

Sie können IntPtr oder Object * hinzufügen, um an den Compiler zu kommen, aber Sie müssen ihm trotzdem die richtigen Daten übergeben, wenn Sie ihn aufrufen.

    
VBNight 06.02.2009 19:31
quelle
0

Soweit ich feststellen kann, ist die C-Deklaration von z4ctyget:

%Vor%

Der zweite Parameter ist eine 5-stellige ANSI-Zeichenfolge, die die Postleitzahl angibt, bei der Sie die Suche starten möchten, oder "00000", um am Anfang der Datei zu beginnen. Ihre Deklaration sollte also lauten:

%Vor%     
Stephen Martin 07.02.2009 13:37
quelle

Tags und Links