【C#】c++/cli封装的托管dll被C#工程调用出现未加载(could not load file or assembly)错误

场景

c#项目需要调用c++编译的非托管dll。常见的方法是在c#中使用DllImport。但这种方式似乎性能上差一些,延迟毫秒量级。(个人粗略测试)响应上不如直接引用C++/CLI混合编程方式编译的托管dll。

那么问题来了。经过C++/CLI成功编译生成了dll。在C#项目中也能正常调用,编译,执行。当我将项目部署在别的机器上时,就会报错,错误信息为”找不到xxx.dll“或者时”could not load file or assembly xxx.dll“。

这里需要提及的是,因为是开发调试阶段,所以c#项目及xxx.dll均为x86的debug版本。

解决方案

  1. 初步分析,认为可能是缺失了相应的dll。于是在部署机器上安装了完整的环境。依然报错。
  2. 使用Dependency Walker查看dll的依赖项,帮助不大。
  3. 最后使用xxx.dll的x86,Release版本运行成功。
  4. 这里有些疑惑,不清楚为什么会导致这样的情况。难道说,C#项目不支持或者找不到debug版本的C++/CLI编译的托管dll吗?
  5. 原因不明,暂且如此做应急处理。

如有大神知道,烦请指导一下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值