Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Les instructions suivantes concernant l'utilisation de [DllImport] doivent être suivies manuellement pour obtenir des résultats corrects. Les utilisateurs .NET 7+ doivent envisager d’utiliser [LibraryImport] à la place. Un analyseur Roslyn intégré (activé par défaut) fournit des instructions requises pour l’attribut [LibraryImport] dans votre code.
La façon dont les valeurs char, les objets string et les objets System.Text.StringBuilder sont transférés dépend de la valeur du champ CharSet sur soit la structure soit P/Invoke. Vous pouvez définir le CharSet d'un P/Invoke en définissant le champ DllImportAttribute.CharSet lors de la déclaration de votre P/Invoke. Pour définir le CharSet d’un type, définissez le champ StructLayoutAttribute.CharSet dans votre déclaration de classe ou de structure. Lorsque ces champs d’attribut ne sont pas définis, il incombe au compilateur de langage de déterminer lequel CharSet utiliser. C#, Visual Basic et F# utilisent l’ensemble None de caractères par défaut, qui a le même comportement que l’ensemble Ansi de caractères.
Si le System.Runtime.InteropServices.DefaultCharSetAttribute est appliqué au module dans le code C# ou Visual Basic, alors le compilateur C# ou Visual Basic émettra le CharSet fourni par défaut au lieu d’utiliser CharSet.None. F# ne prend pas en charge le DefaultCharSetAttribute et émet toujours CharSet.None par défaut.
Le tableau suivant présente la correspondance entre chaque charset et la représentation d’un caractère ou d’une chaîne après marshaling avec ce charset :
valeur CharSet |
Fenêtres | .NET Core 2.2 et versions antérieures sur Unix | .NET Core 3.0 et versions ultérieures et Mono sur Unix |
|---|---|---|---|
Ansi |
char (la page de codes Windows (ANSI) par défaut du système) |
char (UTF-8) |
char (UTF-8) |
Unicode |
wchar_t (UTF-16) |
char16_t (UTF-16) |
char16_t (UTF-16) |
Auto |
wchar_t (UTF-16) |
char16_t (UTF-16) |
char (UTF-8) |
Assurez-vous de bien comprendre la représentation attendue par votre représentation native lors de la sélection de votre jeu de caractères.