Dalam C#, atribut DllImport digunakan untuk mengimport fungsi daripada DLL yang tidak terurus ke dalam kod C# terurus. Parameter laluan atribut ini biasanya menentukan laluan penuh ke DLL. Walau bagaimanapun, apabila berhadapan dengan cabaran pemasangan merentas platform, di mana laluan folder pengguna berbeza-beza, menentukan laluan tetap menjadi tidak praktikal.
Untuk menyelesaikan masalah ini, satu alternatif ialah menggunakan kaedah Path.GetTempPath() untuk menentukan laluan folder sementara profil pengguna semasa secara dinamik. Dari sana, anda boleh menavigasi ke folder data aplikasi tempatan pengguna dan kemudian meneruskan ke subfolder DLL yang dikehendaki.
Walau bagaimanapun, sifat DllImport menjangkakan parameter rentetan const, yang mewujudkan halangan dalam pembinaan laluan masa jalan.
Kaedah yang disyorkan adalah untuk terus menggunakan ciri DllImport. Penyelesaiannya terletak pada memahami peraturan pemuatan DLL Win32 asli, yang mengawal susunan carian untuk DLL tertentu:
Dengan menggunakan laluan relatif atribut DllImport, sistem akan mengutamakan direktori beban aplikasinya untuk mencari DLL. Ini memastikan pelaksanaan yang berjaya walaupun dalam laluan folder pemasangan yang berbeza.
Jika anda memerlukan spesifikasi laluan mutlak, anda boleh menggunakan fungsi SetDllDirectory. Fungsi ini mengubah suai laluan carian lalai dan membenarkan penggunaan nilai dinamik berdasarkan pengiraan masa jalan. Panggil fungsi ini sebelum memanggil mana-mana fungsi DLL yang diimport dan laluan carian yang diubah akan berkuat kuasa.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Laluan DllImport Secara Dinamik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!