Pass int durch Verweis von C ++ / CLI auf C #

8

Es scheint, dass es eine doppelte Frage geben muss, aber ich konnte sie nicht finden.

Ich schreibe eine Bridge, um ein altes C-Programm auf einige C # -Objekte zugreifen zu lassen. Die Brücke ist in C ++ / CLI geschrieben.

In einem Fall gibt es eine C # -Funktion, die definiert ist als:

%Vor%

Meine C ++ / CLI-Wrapper-Funktion:

%Vor%

Das ist einfach genug, um von C aus aufzurufen. Aber wie rufe ich die C # -Methode aus C ++ / CLI heraus?

Ich habe zuerst das Offensichtliche versucht:

%Vor%

Das gibt mir Fehler C2664: Kann Parameter 2 von "Int *" nicht zu "int%" konvertieren.

Okay, dann, wie wäre es mit GetNameAndValue(%value) ? Das gibt mir Fehler C3071: Operator '%' kann nur auf eine Instanz einer Ref-Klasse oder eines Werttyps angewendet werden.

Fair genug. Also, wenn ich ein int erstelle, kann ich es mit % ?? weitergeben

%Vor%

Kein Würfel. C3071 wieder. Was ich seltsam finde weil int definitiv ist ein Wert-Typ. Oder ist es?

Es muss eine magische Kombination von%, ^, & amp; oder irgendeiner anderen Obszönität geben, die das macht, was ich will, aber nachdem ich 30 Minuten lang auf dieses Ding geschworen habe, bin ich ratlos. Und wenn man Google nach verschiedenen Kombinationen von C ++ / CLI und C # durchsucht, erhält man meist Informationen darüber, wie man C ++ von C # aus aufrufen kann.

SO, meine Frage: Wie übergibt man ein int von C ++ / CLI an eine C # -Methode, die ein out int (oder ref int , wenn ich muss) erwartet?

    
Jim Mischel 12.05.2014, 21:58
quelle

2 Antworten

5

C #:

%Vor%

C ++ / CLI:

%Vor%

C ++ / CLI-Wrapper:

%Vor%

C ++ / CLI-Wrapper 2:

%Vor%

Es ist das gleiche für C # "ref".

    
Tomasz Malik 12.05.2014, 22:07
quelle
0

Ich weiß, dass dies bereits beantwortet ist, aber nur um zu klären, was der Compiler mit "C2664: Parameter von int *" in "int%" konvertieren kann Ich denke, das wollte das (C ++ / CLI):

%Vor%     
Pifcnt 12.05.2015 16:06
quelle

Tags und Links