.net中DllImport出现DllNotFoundException但实际上dll文件确实存在。

4
我在我的C#应用程序中使用了DllImport。它在我的Windows 7机器上运行良好,但在Windows 8上会出现DllNotFoundException。我们的一个客户在他的Windows 7机器上也遇到了同样的问题。我甚至对代码进行了一些修改以测试,比如提供绝对路径。
[DllImport("C:\\Program Files (x86)\\MyApp\\A.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void foo(string filename, MulticastDelegate callback);

但是它仍然在路径C:\Program Files (x86)\MyApp\A.dll处给出了DllNotFoundException异常....

但是DLL确实在那里!!!....


在32位机器上,programfiles的路径是c:\program files\而不是c:\program files (x86)\ - spender
我知道这只是在我的64位Windows 8机器上进行的测试,以查看绝对路径是否会解决问题,但它并没有解决。 - pdiddy
你有检查文件/目录权限吗?也就是说,运行程序的用户账户是否能够实际上看到并读取该文件? - tolanj
还有任何 InnerException / 其他细节吗? - tolanj
如果DLL是32位的,则将应用程序exe的目标设置为x86。 - i486
1个回答

0

路径中有空格,所以我猜想可以使用:

[DllImport("\"C:\\Program Files (x86)\\MyApp\\A.dll\"", ...]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接