Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Laluan Import DLL Cross-Platform pada Runtime dalam C#?
Tentukan laluan import DLL merentas platform apabila berjalan dalam C#
Apabila menyepadukan DLL C luaran dalam projek C#, mungkin sukar untuk melampaui nilai yang ditentukan secara statik untuk menyesuaikan laluan import DLL. Artikel ini menangani isu ini, memfokuskan secara khusus pada menentukan laluan import semasa masa jalan.
Walaupun menggunakan atribut DllImport
masih menjadi kaedah pilihan, ia memerlukan direktori DLL untuk menggunakan argumen rentetan malar, yang merupakan had. Ketegaran ini boleh menjadi penghalang dalam situasi di mana lokasi DLL mungkin berbeza antara persekitaran pengguna yang berbeza.
Penyelesaian menggunakan laluan relatif
Bertentangan dengan kepercayaan popular, DllImport
hartanah masih tersedia. Daripada bergantung pada laluan mutlak, menentukan laluan relatif kepada DLL akan menyelesaikan masalah. Perintah carian lalai untuk DLL termasuk direktori aplikasi, memastikan bahawa DLL ditemui semasa pemasangan.
Gunakan SetDllDirectory
Jika laluan relatif tidak berfungsi atau anda perlu menyesuaikan laluan secara dinamik, anda boleh menggunakan fungsi SetDllDirectory
. Memanggil fungsi ini sebelum mengakses fungsi DLL yang diimport membolehkan laluan carian DLL lalai diubah suai.
P/Invoke pernyataan SetDllDirectory
Untuk menggunakan SetDllDirectory
, lakukan import P/Invoke berikut:
<code class="language-csharp">[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool SetDllDirectory(string lpPathName);</code>
Laluan carian DLL boleh dilaraskan pada masa jalan dengan menetapkan parameter lpPathName
secara dinamik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Laluan Import DLL Cross-Platform pada Runtime dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!