1. 程式人生 > >c#中呼叫dll時報無法載入模組的幾種常見原因

c#中呼叫dll時報無法載入模組的幾種常見原因

不說廢話,直接說原因:

用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下能找到這些檔案.