试图加载格式不正确的程序。 (异常来自 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"即可。见下图:

 

  然后保存重新编译

 

原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。不能混编访问。不然会出现“试图加载格式不正确的程序”的错误;

解决办法是把发布网站的程序池开通32位兼容性即可,如下图:

 

3.如果上面的没有解决,那就是VSC#工程的问题,打开对应的工程文件(*.csproj),如下图<Prefer32Bit>false</Prefer32Bit>节点

 

下面是MSDN的解释:

CSharpProjectConfigurationProperties6.Prefer32Bit 属性

获取或设置一个标志,指示是否首选的 32 位平台。

命名空间:  VSLangProj110

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
当我们试图加载一个格式正确程序时,计算机会遇到一些问题,因为那些程序无法被正确地识别和打开。这个错误消息"HRESULT:0x8007000b"是指Windows中的一种错误代码,它表示"HRESULT"发生了一些错误。HRESULT是一种用于描述COM组件之间交互结果的标准。它通常与COM组件相关,按照规定的格式生成。 这个错误通常出现在以下几种情况下: 1、程序被破坏或损坏:如果程序文件被破坏或损坏,计算机无法正确加载它,就会出现这个错误。 2、程序文件格式正确:如果程序文件格式正确,计算机也无法正确加载它,就会出现这个错误。 3、不兼容的操作系统或硬件:有时,程序可能只适用于特定的操作系统或硬件,如果我们试图在其他平台上运行它,也可能会出现这个错误。 为了解决这个问题,我们可以尝试以下一些方法: 1、重新下载或安装程序:如果程序文件被破坏或损坏,我们可以尝试重新下载或安装该程序。这通常可以解决文件损坏引起的问题。 2、尝试打开其他格式的文件:如果程序文件格式正确,我们可以尝试打开其他格式的文件,或者使用其他程序打开这个文件。这可能需要我们去查找一些文件转换工具。 3、查找适用于我们的操作系统或硬件的程序版本:如果我们确定程序适用于我们的操作系统或硬件,我们可以尝试查找与之兼容的程序版本。 总之,这个错误通常是由于程序文件损坏或格式正确引起的。我们可以尝试重新下载或安装程序,或者查找其他适用于我们的操作系统或硬件的程序版本,来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值