在C#中運作時指定跨平台DLL導入路徑
在C#專案中整合外部C DLL時,超越靜態定義值自訂DLL的導入路徑可能具有挑戰性。本文解決了這個問題,特別關注在運行時指定導入路徑。
雖然使用DllImport
屬性仍然是首選方法,但它要求DLL目錄使用常數字串參數,這是一個限制。這種剛性在DLL位置可能因不同使用者環境而異的情況下會成為障礙。
使用相對路徑的解
與普遍看法相反,DllImport
屬性仍然可行。與其依賴絕對路徑,不如指定DLL的相對路徑來解決問題。 DLL的預設搜尋順序包括應用程式的目錄,確保在安裝過程中找到DLL。
利用SetDllDirectory
如果相對路徑不起作用,或需要動態自訂路徑,可以使用SetDllDirectory
函數。在存取導入的DLL函數之前呼叫此函數允許修改預設的DLL搜尋路徑。
SetDllDirectory的P/Invoke聲明
要使用SetDllDirectory
,請執行下列P/Invoke導入:
<code class="language-csharp">[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool SetDllDirectory(string lpPathName);</code>
透過動態設定lpPathName
參數,可以在執行時調整DLL搜尋路徑。
以上是如何在 C# 中在執行時指定跨平台 DLL 導入路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!