c#中呼叫dll時報無法載入模組的幾種常見原因
阿新 • • 發佈:2018-12-16
不說廢話,直接說原因:
用c#寫的a.exe程式碼:
static void Main(string[] args)
{
int i = doit();
Console.WriteLine(i);
Console.ReadKey();
}
[DllImport("aa.dll", EntryPoint ="doit")]
public static extern int doit(); //返回個int 型別
1.dllimport中的"aa.dll",可能是路徑不對,正常是要確保aa.dll與c#寫的exe檔案放在同一個目錄下,即:a.exe和aa.dll在同一目錄下,並且有許可權訪問aa.dll(一般不會出現無許可權的原因)
2.64位與32位,如果a.exe是x64編譯,aa.dll是x64/x32編譯,正常執行。如果a.exe是x32,aa.dll是x32,正常執行。如果a.exe是x32,aa.dll是64,則肯定失敗。解決辦法:確保a.exe的位制大於等於aa.dll的位制。
3.查一下aa.dll所需要的支援dll有沒有和aa.dll放在一起,或者放在system32目錄下。解決辦法,用工具查一下aa.dll的支援dll,並確保當前目錄/system32/$PATH下能找到這些檔案.