C#调C++生成的dll报0x800736B1错误

当C#程序调用C++生成的DLL时,可能出现0x800736B1错误。这通常由于DLL依赖的CRT库版本不正确导致。调试版DLL需要msvcr80d.dll等,而发布版需要msvcr80.dll。检查DLL中的manifest文件确定其依赖的CRT版本,并确保部署时包含正确的运行时组件。解决方案包括在VS.NET 2005中切换到Release模式并重新生成项目,确保发布的DLL是Release版本。
摘要由CSDN通过智能技术生成

      这个错误看上去好像是 C++ DLL库本身的问题,其实并不尽然。由于使用了混合模式编译托管 DLL ,所以该 DLL 又会用到非托管的 CRT ( C Run-Time )库。如果机器上没有安装这些被使用到的运行时组件,就会产生类似 HRESULT: 0x8007 的错误。

       要注意的是,如果你编译 C++ 托管程序集的时候使用的是 Debug 配置的话,生成的 DLL 需要调用的就是 CRT 对应的 debug 版本( msvcr80d.dll 及 msvcm80d.dll 等 )而不是(msvcm80.dll及 msvcp80.dll等)。了解生成的 DLL 到底是 Debug 还是 Release 版本最简单的方法是用文本编辑器打开该 DLL 文件,找到以下类似的内容(一般位于文件末尾处):

<assembly xmlns="urn:schemas-microsoft-com:asm.v1"    

  1.           manifestVersion=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值