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下能找到这些文件.

 

你可能感兴趣的:(boost经验)