技術共有

グローバル::System.Runtime.InteropServices.DllImport

2024-07-12

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

C#プログラミングでは、[global::System.Runtime.InteropServices.DllImport]アンマネージ コード (通常は C または C++ で記述された DLL またはライブラリ) のエントリ ポイントをマークし、C# コードから呼び出せるようにするために使用される属性です。この機能は P/Invoke (プラットフォーム呼び出しサービス) メカニズムの一部であり、C# コードが他のプログラミング言語のコードと対話できるようにします。

この機能は通常、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は1つですMyNativeLibrary.dllで定義された関数。この関数は C# コードにインポートされるため、Mainメソッドで呼び出されます。

DllImportプロパティにはいくつかのパラメータがありますが、最も一般的なパラメータは DLL の名前です (上記の例のように)。他のパラメータには、呼び出し規約 (CallingConvention)、CharSet (文字列に使用される文字セット) などが含まれる場合があります。

注: DLL で P/Invoke を使用する場合は、DLL がアプリケーションと互換性があることを確認する必要があります (つまり、同じランタイム環境を使用し、DLL がオペレーティング システムとアーキテクチャに合わせてコンパイルされている)。さらに、P/Invoke は C# のタイプ セーフティ システムをバイパスするため、渡されたパラメーターと戻り値が DLL 内の関数のシグネチャと正確に一致することを確認するために特別な注意を払う必要があります。