试图加载格式不正确的程序 0x8007000b怎么解决
错误“试图加载格式不正确的程序 0x8007000b”通常是由于位数不匹配引起的。
当你在64位系统上运行一个为32位系统开发的程序或DLL时,就会出现这种错误。
解决这个问题的方法是在项目的属性中设置正确的目标平台。
解决方法
1、设置目标平台为X86:
在“解决方案资源管理器”中,右键点击项目,选择“属性”。
在属性窗口中选择“生成”。
在“目标平台”下拉菜单中选择“X86”,这样可以将项目的目标平台设置为32位。
2、设置目标平台为X64:
如果DLL是为64位系统开发的,需要在32位编译环境下运行,可以将项目的目标平台设置为X64。
同样在“解决方案资源管理器”中右键点击项目,选择“属性”。
在属性窗口中选择“生成”。
在“目标平台”下拉菜单中选择“X64”,这样可以将项目的目标平台设置为64位。
通过调整目标平台设置,可以解决因位数不匹配导致的错误,确保程序能够正确加载和运行。
试图加载格式不正确的程序 0x8007000b怎么解决
试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
两种原因:
第一种为程序的运行以平台系统位数不匹配,第二种则是该死的VS整出来的…
一般在下面三种情景下会发生.
1.64位系统上C#调用32位的C++ *.dll
2.64位系统上IIS发布含有32位的 *.dll应用程序时
3.64位系统上编写C++ *.dll,在64位系统上通过 C#调用 ,可能成功,也可能失败,失败就报BadImageFormatException 异常,也是最二的一种情况.是由该死的VS整出来的
解决方法如下:
1.VS在64位系统下面,编译调试某个C++的API的时候,报错:未处理BadImageFormatException 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
详见下图:
其原因是该API是在32位系统下面开发的,
在64位系统上面开发编译的时候需要将生成的目标平台设为X86。
方法是:
在右边的“解决方案资源管理器”里,右键该项目点击属性。
在属性窗口里选择“生成”——“目标平台”下拉里选中“X86″即可。见下图:
然后保存重新编译
2.在64位操作系统下IIS发布32位的项目,
报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误。
原因:
程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。
不能混编访问。不然会出现“试图加载格式不正确的程序”的错误;
解决办法是把发布网站的程序池开通32位兼容性即可,如下图:
3.如果上面的没有解决,
那就是VS中C#工程的问题,打开对应的工程文件(*.csproj),如下图<Prefer32Bit>false</Prefer32Bit>节点
下面是MSDN的解释:
CSharpProjectConfigurationProperties6.Prefer32Bit 属性
获取或设置一个标志,指示是否首选的 32 位平台。
命名空间: VSLangProj110
程序集: VSLangProj110(在 VSLangProj110.dll 中)
语法
C#
bool Prefer32Bit { get; set; }
属性值
类型:System.Boolean
返回表示 32 位首选项的标志。
返回true如果 32 位是首选。
否则,返回false。.net core 3.1精伦身份证读卡器IDR210-2(部标版)二次开发
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。