Domanda

Sto usando una DLL scritta in C ++ in un'applicazione C #. Qual è l'equivalente per

  1. char const *
  2. unsigned short

in C #

grazie

È stato utile?

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 è: è un IntPtr .

  • Un short senza segno in C ++ è generalmente un intero senza segno a 16 bit: UInt16 (o ushort 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:

  1. stringa o byte [] , a seconda di come viene utilizzata la variabile nel codice C.
  2. ushort , assumendo unsigned short prodotto dal tuo compilatore C è di 16 bit. In C #, ushort è sempre 16 bit (e uint è 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top