2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
En programmation C#,[global::System.Runtime.InteropServices.DllImport]
est un attribut utilisé pour marquer le point d'entrée d'un code non managé (généralement une DLL ou une bibliothèque écrite en C ou C++) afin que le code C# puisse l'appeler. Cette fonctionnalité fait partie du mécanisme P/Invoke (Platform Invocation Services), qui permet au code C# d'interagir avec le code d'autres langages de programmation.
Lorsque vous voyez cette fonctionnalité, elle est généralement utilisée pour importer une fonction dans une DLL afin qu'elle puisse être appelée en code C#. Par exemple:
- using System;
- using System.Runtime.InteropServices;
-
- class NativeMethods
- {
- // 导入DLL中的函数
- [DllImport("MyNativeLibrary.dll")]
- public static extern int MyNativeMethod(int a, int b);
- }
-
- class Program
- {
- static void Main()
- {
- // 调用DLL中的函数
- int result = NativeMethods.MyNativeMethod(1, 2);
- Console.WriteLine(result);
- }
- }
Dans cet exemple,MyNativeMethod
est un dansMyNativeLibrary.dll
fonction définie dans , qui est importée dans le code C# afin de pouvoir êtreMain
appelé dans la méthode.
DllImport
Les propriétés ont plusieurs paramètres, mais le paramètre le plus courant est le nom de la DLL (comme dans l'exemple ci-dessus). D'autres paramètres peuvent inclure une convention d'appel (CallingConvention), CharSet (jeu de caractères utilisé pour les chaînes), etc.
Remarque : lorsque vous utilisez P/Invoke avec une DLL, vous devez vous assurer que la DLL est compatible avec votre application (c'est-à-dire qu'elle utilise le même environnement d'exécution et que la DLL est compilée pour votre système d'exploitation et votre architecture). De plus, étant donné que P/Invoke contourne le système de sécurité de type C#, des précautions supplémentaires doivent être prises pour garantir que les paramètres transmis et les valeurs renvoyées correspondent exactement à la signature de fonction dans la DLL.