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中,有些时候会出现程序同时加载x86dll和x64dll 同时运行的情况,
如何出现这中情况,那么是可以运行的,但是‘程序移植’到其他平台会发现,这中环境,同时运行x86与x64 同时运行,情况很少。
’笔者,也没搞懂这个问题‘
正常情况:
x86只能加载运行x86dll
x64只能加载运行x64dll
VS2019 example
选择当前项目 -> 属性
配置:可以选择’debug‘和’release‘和’所有配置‘
笔者这里选择’所有配置‘
我这里的dll是x64 所以选择64
编译运行即可。
4.以上还不能解决如果是c++demo调用 c/c++ sdk x86和x64的dll不兼容会出现
5 如果’c#’或’其他高级语言’调用’ c/c++ sdk x86和x64’不兼容会出现如下情况
笔者这里以c#为example
System.BadImageFormatException: 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)
基本可以确定是c++sdk中x86或x64平台不兼容问题引起的。如果修改了x86运行和x64运行还不行的话,只能通过工具,将c++sdk 一个一个打开检查 发现x86或x64 那个地方不兼容,替换即可。
Dependencies 这个工具
如下 这个工具提供一个一个gui界面 和一个直接查看显示dll的平台
如果找不到问题那么就一个一个sdk测试把。
gui界面
单个
最终补充
笔者这里就出现了,x86和x64同时都可以运行的情况。所以笔者本机可以跑,在其他平台上,上面2中异常基本都出现过。笔者这里解决的办法,将x86dll全部使用x64替换就完成了。