C#调用C++DLL:试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B_wind_新浪博客...

本文介绍了解决在Win7 64位环境中调用C++ DLL时遇到“试图加载格式不正确的程序”错误的方法。通过调整C++ DLL项目的平台配置从x64改为Win32,并重新编译,可以有效解决C#调用DLL时出现的兼容性问题。

Win7 64位环境,调用C++的DLL,报错:试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)。 查看函数名称和变量类型都是正确的,后来发现是C++DLL的系统配置为x64,而C#为32。

解决方案:

C++DLL项目属性->Configuration Manager->设置DLL项目的Platfrom为Win32.重新编译即可。​

在EmguCV和C#中执行 `dst33 = new Mat()` 出现 `BadImageFormatException`(HRESULT:0x8007000B)错误,通常是由于平台架构匹配、依赖库缺失或损坏等原因导致的。以下是具体的解决办法: #### 平台架构匹配 此错误往往是因为应用程序的目标平台与EmguCV库的平台架构一致。例如,应用程序是x86架构,而EmguCV库是x64架构,就会引发该异常。 要保证应用程序的目标平台与EmguCV库的平台架构一致。在Visual Studio中,可以通过以下方式设置: 1. 右键单击项目,选择“属性”。 2. 在“生成”选项卡中,将“平台目标”设置为与EmguCV库相同的架构(x86或x64)。 示例代码: ```csharp using System; using Emgu.CV; class Program { static void Main() { try { Mat dst33 = new Mat(); Console.WriteLine("Mat对象创建成功!"); } catch (BadImageFormatException ex) { Console.WriteLine($"发生BadImageFormatException异常: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"发生其他异常: {ex.Message}"); } } } ``` #### 依赖库缺失或损坏 EmguCV依赖于OpenCV库,若这些依赖库缺失或损坏,也会导致 `BadImageFormatException` 异常。 要确保所有必要的DLL文件都存在于应用程序的运行目录中,或者已正确配置了环境变量。可以从EmguCV官方网站下载对应版本的库文件,并将其复制到应用程序的运行目录下。 #### 版本兼容 EmguCV与OpenCV库的版本必须兼容,兼容的版本可能会导致初始化失败。要保证使用的EmguCV版本和对应的OpenCV版本是兼容的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值