c++ dll 0xc000007b 和 System.BadImageFormatException: 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)

c++ dll 0xc000007b System.BadImageFormatException: 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)

 

        1.vc++运行库问题

    建议下载微软运行库2005-2019  x86/x64 都需要安装

  2.net framework

    建议下载到最新版本

       3.x86 x64 架构引起

     x86dll/x64dll 这里指其他的sdk的库

    在vs中,有些时候会出现程序同时加载x86dllx64dll 同时运行的情况,

    如何出现这中情况,那么是可以运行的,但是‘程序移植’到其他平台会发现,这中环境,同时运行x86x64 同时运行,情况很少。

    ’笔者,也没搞懂这个问题‘

  正常情况:

    x86只能加载运行x86dll

    x64只能加载运行x64dll

  VS2019 example

    选择当前项目 -> 属性

    配置:可以选择debug‘和’release‘和’所有配置‘

    笔者这里选择’所有配置‘

    我这里的dllx64 所以选择64

 

   编译运行即可。

 4.以上还不能解决如果c++demo调用 c/c++ sdk x86x64dll不兼容会出现

 

 5 如果’c#’或’其他高级语言’调用’ c/c++ sdk x86x64’不兼容会出现如下情况

笔者这里以c#example

System.BadImageFormatException: 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)

 

基本可以确定是c++sdkx86x64平台不兼容问题引起的。如果修改了x86运行和x64运行还不行的话只能通过工具,将c++sdk 一个一个打开检 发现x86x64 那个地方不兼容,替换即可。

Dependencies 这个工具

如下 这个工具提供一个一个gui界面 和一个直接查看显示dll的平台

 

如果找不到问题那么就一个一个sdk测试把。

gui界面

 

单个

 

最终补充

笔者这里就出现了,x86和x64同时都可以运行的情况。所以笔者本机可以跑,在其他平台上,上面2中异常基本都出现过。笔者这里解决的办法,将x86dll全部使用x64替换就完成了。

  

原文地址:https://www.cnblogs.com/XiaoGuanYu/p/13082031.html