Berbagi teknologi

global::Sistem.Runtime.InteropServices.DllImpor

2024-07-12

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

Dalam pemrograman C#,[global::System.Runtime.InteropServices.DllImport] adalah atribut yang digunakan untuk menandai titik masuk kode yang tidak dikelola (biasanya DLL atau pustaka yang ditulis dalam C atau C++) sehingga kode C# dapat memanggilnya. Fitur ini merupakan bagian dari mekanisme P/Invoke (Platform Invocation Services), yang memungkinkan kode C# berinteraksi dengan kode dalam bahasa pemrograman lain.

Jika Anda melihat fitur ini, biasanya digunakan untuk mengimpor fungsi dalam DLL agar dapat dipanggil dalam kode C#. Misalnya:

  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. }

Dalam contoh ini,MyNativeMethodadalah satu masukMyNativeLibrary.dllfungsi yang didefinisikan dalam , yang diimpor ke kode C# sehingga bisaMaindipanggil dalam metode.

DllImport Properti memiliki beberapa parameter, namun parameter yang paling umum adalah nama DLL (seperti pada contoh di atas). Parameter lain mungkin termasuk konvensi pemanggilan (CallingConvention), CharSet (kumpulan karakter yang digunakan untuk string), dll.

Catatan: Saat menggunakan P/Invoke dengan DLL, Anda harus memastikan bahwa DLL tersebut kompatibel dengan aplikasi Anda (yaitu, mereka menggunakan lingkungan runtime yang sama, dan DLL dikompilasi untuk sistem operasi dan arsitektur Anda). Selain itu, karena P/Invoke melewati sistem keamanan tipe C#, perhatian ekstra harus diberikan untuk memastikan bahwa parameter yang diteruskan dan nilai yang dikembalikan sama persis dengan tanda tangan fungsi di DLL.