Equivalente del tipo di riferimento C ++ in C #
Domanda
Sto usando una DLL scritta in C ++ in un'applicazione C #. Qual è l'equivalente per
-
char const *
-
unsigned short
in C #
grazie
Soluzione
-
Un
char *
in C ++ può avere significati diversi, ad es. un puntatore a un array di byte o una stringa con terminazione null codificata ANSI. Quindi dipende dal significato dei tuoi dati come il valore può essere trasferito su C #. L'unica risposta definitivamente non sbagliata è: è unIntPtr
. -
Un
short senza segno
in C ++ è generalmente un intero senza segno a 16 bit:UInt16
(oushort
in C #).
Altri suggerimenti
Ho esaminato il codice per la tua domanda e penso che l'ho scritto meglio (controlla l'intento). In tal caso, stai cercando:
-
stringa
obyte []
, a seconda di come viene utilizzata la variabile nel codice C. -
ushort
, assumendounsigned short
prodotto dal tuo compilatore C è di 16 bit. In C #,ushort
è sempre 16 bit (euint
è sempre 32 bit). Congratulazioni a MS per averci finalmente dato una certa coerenza qui. :)
Per chiamare un metodo esposto tramite una DLLImport, ti consigliamo di utilizzare il tipo IntPtr per i puntatori.
Ricorda in C ++ char * è in realtà un puntatore alla memoria, di solito rappresentato da un int di 4 byte