未处理System.BadImageFormatException,试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
本文原地址 https://www.cnblogs.com/sundajade/articles/3735663.html
最近想做一个用C#控制USB Realy,其中usb_relay_device.dll是用C所写的dll,网上有很多C++调用的例子,也有很多用C#调用usb_relay_device.dll的调用方法,但是在自己实际使用时,一直提示
"未处理System.BadImageFormatException
HResult=-2147024885
Message=试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)",
如下图所示。
在网上找了很多资料,终于找到了解决方法。详细文件见上文地址。自己本地遇到的状况是,本机是64位系统,但是usb_relay_device.dll是32位系统dell,将生成的目标平台更改成x86即可。
-------------------------分割线-----------------------------------------
两种原因:
第一种为程序的运行以平台系统位数不匹配,第二种则是该死的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。
来自 <http://msdn.microsoft.com/zh-cn/library/vslangproj110.csharpprojectconfigurationproperties6.prefer32bit.aspx>
我们要做的修改就是将Prefer32Bit节点删除掉或是把节点的值改为true,保存,重新打开或是加载VS中的工程,再运行,OK
未处理System.BadImageFormatException,试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)相关推荐
- System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)...
System.BadImageFormatException: 试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 原文 System.BadImageFormatExce ...
- System.BadImageFormatException: 试图加载格式不正确的程序。
最近写了一个demo,调用了第三方的DLL,项目编译成功后,运行报: System.DllNotFoundException: 无法加载 DLL".\xxx.dll": 找不到指定 ...
- C#加载dll遇到System.BadImageFormatException: 试图加载格式不正确的程序
C#遇到System.BadImageFormatException: 试图加载格式不正确的程序 解决方案:配置到和引导的dll同一个平台
- System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
System.BadImageFormatException: 试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 网上很多关于System.BadImageFormatE ...
- “未处理System.BadImageFormatException HResult=-2147024885 Message=试图加载格式不正确的程序。 (异常来自 HRESULT:0x800
本文原地址 试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) - sundajade - 博客园 "未处理System.BadImageFormatExcept ...
- C# Winform 未能加载文件或程序集System.Data.SQLite或它的某一个依赖项。试图加载格式不正确的程序...
在使用Winform 开发了一个小软件,其中使用了SQLite作为数据库 但在我的Win7 64位系统上却出现了以下错误: System.BadImageFormatException: 未能加载文件 ...
- 【转】未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。...
"/xxxxx"应用程序中的服务器错误. -------------------------------------------------------------------- ...
- 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。(转)...
未能加载文件或程序集"XXX"或它的某一个依赖项.试图加载格式不正确的程序. 作者: 字体:[增加 减小] 类型:转载 时间:2012-11-01 我要评论 如果你将应用程序生成x ...
- 安装Windows服务时出现试图加载格式不正确的程序或系统找不到指定的文件以及相关问题
安装Windows服务可使用, C:\Windows\Microsoft.NET\Framework64\v4.0.30319>installUtil.exe Microsoft (R) .NE ...
- 试图加载格式不正确的程序
部署IIS的时候,会出现 System.BadImageFormatException: Could not load file or assembly 'xxx' or one of its dep ...
最新文章
- 如何使用拦截器获取Controller方法名和注解信息?
- CentOS 7 用yum安装 MySQL
- codeforces round721 div2. E
- WebLogic 12c 修改节点 Managed Server 和 AdminServer 内存方法
- 模拟CA机构制作CA机构证书
- html5新增的一个input属性
- Android【报错】Failed to resolve: com.android.support:appcompat-v7:28.0.0-alpha【报错】
- android触摸屏idc,android4.0触摸屏滑鼠模式解决方法-添加idc文件
- Matlab2017b 安装教程
- 在Word中快速插入分隔线
- 2020年腾讯实习生C++面试题及答案持续更新中(4)
- 无人机开发-介绍Mavlink协议的消息组成、如何看懂繁杂的mavlink官网介绍、简单介绍地面站与飞控的通讯流程
- 小程序如何开通流量主
- HDU 5810(伯努利实验、多校7、规律)
- Ubuntu下的终端多标签切换快捷键
- 正则中的()、[]、{}
- qt开发linux界面软件,利用Qt Designer开发Qt界面
- 设计师必看的十部电影
- 服务器千兆网卡显示百兆,windows10系统查看网卡是千兆还是百兆的方法
- 燕山大学计算机系在哪个校区,2021年燕山大学有几个校区,大一新生在哪个校区...