源代码实例:
用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下能找到这些文件.