기술나눔

global::System.Runtime.InteropServices.DllImport

2024-07-12

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

C# 프로그래밍에서는[global::System.Runtime.InteropServices.DllImport] C# 코드가 호출할 수 있도록 관리되지 않는 코드(일반적으로 C 또는 C++로 작성된 DLL 또는 라이브러리)의 진입점을 표시하는 데 사용되는 특성입니다. 이 기능은 C# 코드가 다른 프로그래밍 언어의 코드와 상호 작용할 수 있도록 하는 P/Invoke(플랫폼 호출 서비스) 메커니즘의 일부입니다.

이 기능은 일반적으로 C# 코드에서 호출할 수 있도록 DLL에서 함수를 가져오는 데 사용됩니다. 예를 들어:

  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(문자열에 사용되는 문자 집합) 등이 포함될 수 있습니다.

참고: DLL과 함께 P/Invoke를 사용하는 경우 DLL이 애플리케이션과 호환되는지 확인해야 합니다(즉, 동일한 런타임 환경을 사용하고 DLL이 운영 체제 및 아키텍처에 맞게 컴파일됨). 또한 P/Invoke는 C#의 형식 안전 시스템을 우회하므로 전달된 매개 변수와 반환된 값이 DLL의 함수 서명과 정확히 일치하는지 확인하기 위해 특별한 주의를 기울여야 합니다.