Question

J'utilise une DLL écrite en C ++ dans une application C #. Quel est l'équivalent pour

  1. char const *
  2. short non signé

en C #

merci

Était-ce utile?

La solution

  • Un char * en C ++ peut avoir différentes significations, par exemple. un pointeur sur un tableau d'octets ou une chaîne terminée par null codée ANSI. Donc, cela dépend de la signification de vos données et de la manière dont la valeur peut être marshalée en C #. La seule réponse qui ne soit définitivement pas fausse est la suivante: il s'agit d'un IntPtr .

  • Un unsigned short en C ++ est généralement un entier non signé de 16 bits: UInt16 (ou ushort en C #).

Autres conseils

J'ai consulté le code de votre question et Je pense que je l'ai mieux libellé (vérifiez l'intention). Si oui, vous recherchez:

  1. La chaîne ou le octet [] , en fonction de l'utilisation de la variable dans le code C.
  2. ushort , en supposant que short signé produit par votre compilateur C est de 16 bits. En C #, ushort a toujours 16 bits (et uint a toujours 32 bits). Félicitations à MS pour nous avoir enfin donné une certaine cohérence ici. :)

Pour appeler une méthode exposée via une DLLImport, vous voudrez utiliser le type IntPtr pour les pointeurs.

Rappelez-vous en C ++, car * est en fait un pointeur sur la mémoire, généralement représenté par un entier de 4 octets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top