Rumah > pembangunan bahagian belakang > C++ > Bolehkah Laluan DLL Dinamik Digunakan dengan DllImport C#?

Bolehkah Laluan DLL Dinamik Digunakan dengan DllImport C#?

Barbara Streisand
Lepaskan: 2025-01-15 20:15:43
asal
845 orang telah melayarinya

Can Dynamic DLL Paths Be Used with C#'s DllImport?

Adakah DllImport dalam C# menyokong laluan dinamik masa jalan?

Apabila menggunakan atribut DllImport dalam C#, anda biasanya perlu menentukan laluan ke DLL secara statik. Walau bagaimanapun, apabila laluan pemasangan aplikasi bergantung kepada pengguna (contohnya: C:UsersuserName...), pengekodan keras laluan mutlak tidak praktikal.

Kaedah tradisional

Walaupun isu ini, adalah disyorkan untuk menggunakan laluan relatif. Nyatakan hanya nama DLL dan sistem akan mencarinya dalam direktori aplikasi dan lokasi pratakrif lain (mengikut garis panduan pemuatan DLL Windows).

SetDllDirectory dan P/Invoke

Jika laluan relatif tidak sesuai dengan keperluan anda, pertimbangkan untuk menggunakan fungsi SetDllDirectory. Fungsi ini membolehkan anda mengubah suai laluan carian DLL lalai pada masa jalankan, membolehkan anda menentukan laluan dinamik yang dikira pada masa itu.

Untuk menggunakan SetDllDirectory anda perlu menggunakan P/Invoke kerana ia adalah fungsi API Windows. Inilah kenyataannya:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);
Salin selepas log masuk

Pencapaian

Kod anda sepatutnya kelihatan serupa dengan yang berikut:

SetDllDirectory(Path.GetTempPath() + "..\myLibFolder");

[DllImport("MyAppDll.dll")]
static extern bool MyGreatFunction(int myFirstParam, int mySecondParam);
Salin selepas log masuk

Ini mengubah hala laluan carian DLL ke lokasi yang mengandungi garpu masa jalan, sebelum susunan carian standard sistem.

Kelebihan

Menggunakan fungsi SetDllDirectory, anda boleh menentukan lokasi masa jalan DLL secara dinamik tanpa bergantung pada mesin atau laluan pemasangan pengguna.

Atas ialah kandungan terperinci Bolehkah Laluan DLL Dinamik Digunakan dengan DllImport C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan