Обмен технологиями

global::System.Runtime.InteropServices.DllImport

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

В программировании на C#[global::System.Runtime.InteropServices.DllImport] Это атрибут (Attribute), который используется для обозначения точки входа неуправляемого кода (обычно DLL или библиотеки, написанной на C или C++), чтобы код C# мог ее вызвать. Эта функция является частью механизма P/Invoke (службы вызова платформы), который позволяет коду C# взаимодействовать с кодом на других языках программирования.

Когда вы видите эту функцию, она обычно используется для импорта функции в DLL, чтобы ее можно было вызывать в коде C#. Например:

  1. using System;
  2. using System.Runtime.InteropServices;
  3. class NativeMethods
  4. {
  5. // 导入DLL中的函数
  6. [DllImport("MyNativeLibrary.dll")]
  7. public static extern int MyNativeMethod(int a, int b);
  8. }
  9. class Program
  10. {
  11. static void Main()
  12. {
  13. // 调用DLL中的函数
  14. int result = NativeMethods.MyNativeMethod(1, 2);
  15. Console.WriteLine(result);
  16. }
  17. }

В этом примереMyNativeMethodодин вMyNativeLibrary.dllфункция, определенная в , которая импортируется в код C#, чтобы ее можно былоMainвызывается в методе.

DllImport Свойства имеют несколько параметров, но наиболее распространенным параметром является имя DLL (как в примере выше). Другие параметры могут включать соглашение о вызовах (CallingConvention), CharSet (набор символов, используемый для строк) и т. д.

Примечание. При использовании P/Invoke с DLL вы должны убедиться, что DLL совместима с вашим приложением (т. е. они используют одну и ту же среду выполнения, а DLL скомпилирована для вашей операционной системы и архитектуры). Кроме того, поскольку P/Invoke обходит систему безопасности типов C#, необходимо проявлять особую осторожность, чтобы гарантировать, что передаваемые параметры и возвращаемые значения точно соответствуют сигнатуре функции в DLL.