我是新的dotnet.I有一個dotnet dll通過使用DllImport
加載c
dll。我想將所有dll放在與應用程序位置不同的文件夾中。我不想修改環境變量。所以我使用setdlldirectory
API並通過Assembly.Loadfrom(..)
加載我的c#程序集。我通過驗證GetDllDirectory(..)
的值檢查了SetdllDirectory
工作正常。但它既沒有從該文件夾加載C#DLL也沒有C DLL。通過指定Assembly.Loadfrom
中的路徑,我可以加載C#
dll。但無法加載c dll。從c#中的SetdllDirectory中指定的路徑加載dll#
在此先感謝!
其實我不想修改任何環境變量。有沒有什麼辦法可以從SetDllDirectory中指定的路徑加載C#dll和c#dll? – 2012-07-11 04:28:59
這是最簡單的方法,你根本不必使用SetDllDirectory。當通過.NET interop(DllImport)加載dll時,不會使用通過SetDllDirectory函數設置的路徑,您必須使用LoadLibrary(kernel32.dll)來獲取函數指針,然後使用編組獲取該dll函數的委託。這可能是helpul:http://stackoverflow.com/a/1750938/1515409 – Tomek 2012-07-11 05:50:25
這適用於我。謝謝。 – zionpi 2013-06-07 05:45:38