在64位系统上使用32位DLL显示0x8007000B错误
我必须在我的应用程序中使用第三方DLL。该DLL是一个32位,我使用的系统是64位操作系统。在64位系统上使用32位DLL显示0x8007000B错误
我已导入32位DLL在我的申请DOTNET的(框架-4.5)如下面
[DllImport("Sample.dll",
EntryPoint = "Add",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern int Add(int iA, int iB);
在IIS 7.5 - I设置了 “启用的32位应用程序” 为 “真”。
还尝试将编译器管理器设置为 - X86,x64和任何CPU。
但所有的尝试导致同样的错误
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
如何解决这个问题......
检查在Configuration Manager的构建复选框可执行文件,是什么它正在运行的CPU,可能你有任何CPU在那里建立。重新启动Visual Studio然后不抱怨它不能调试程序集。该项目开放的属性 - >编译期>高级编译选项 - >目标CPU
右键单击:它应该与“站台”你正在建设。也就是说,如果你正在构建“任何CPU”,那么“目标CPU”应该说“任何CPU”。通过使所有平台处于活动状态并检查此设置来浏览所有平台。
如果您尝试运行IIS 7(和/或64位操作系统的机器)的32位应用程序,你会得到同样的错误。因此,从IIS 7中右键单击应用程序的应用程序池并转到“高级设置”并将“启用32位应用程序”更改为“TRUE”。
重新启动您的网站,它应该工作。
如果您尝试运行IIS 7(和/或64位操作系统的机器)的32位应用程序,你会得到同样的错误。因此,从IIS 7中右键单击应用程序的应用程序池并转到“高级设置”并将“启用32位应用程序”更改为“TRUE”。
重新启动您的网站,它应该工作。
当我运行在64位机上的32位的DLL和使用的DllImport方法时,忘记安装相应的可再发行库我打电话我都经历过这个问题两者。我偶尔需要安装visual C++可再发行组件,当一个被调用的库有依赖关系时,我还需要安装英特尔Visual Fortran可再发行组件 - 从.NET库调用Fortran函数时。
可能是你可以找到你的答案在这里 –
Aakash
2013-05-14 09:32:24
可能重复[如何以32位模式运行VS 2010本地IIS](http://*.com/questions/10711498/how-to-run-vs-2010-local-iis-in-32-bit-mode) – 2013-05-14 10:03:29
请参阅这篇文章关于0x8007000B错误http://*.com/questions/18007967/net-framework-error-hresult-0x8007000b/36353971#36353971 – JinSnow 2016-04-01 10:28:19