Windows 下软件部署踩坑之DLL not find

12 篇文章 0 订阅

C#调用C++ 库报DLL not find,有时提示的是BadImageFormaExection,很烦人的一个错误

可能原因:

(1)可能真没有那个DLL或者文件名写错了

 首先查看一下路径下有没有该dll,注意X86和AnyCPU的路径是不一样的,如果要打包X86,必须保证X86想要目录下有相应的库文件

(2)用户没有装vc运行库,或者安装的VC库与发布的不匹配

      用户系统是新装的,VC运行库什么的都没有,而测试要求必须满足能在新系统上跑!这种时候一般有两种做法,一是在打包的时候放入相关动态库,二是安装/启动的时候,检查系统有没有安装相应的VC库,在线安装VC库。这里我介绍第一种:

  在开发机上打开 C:\Windows\SysWOW64 (不是C:\Windows\System32)目录,复制相应VC版本的库到安装包中,比如如果VC库是VC2015的,复制vcruntime140.dll、vccorlib140.dll、vcomp140.dll等到相应目录下,一般可以解决该问题。这种做法对VC2017运行库以下的起效,VC2017是不起作用的。(如果知道怎么部署VC2017的,麻烦说明一下)。

vccorlib140d.dll是debug版的,用户一般安装的是Release版的,不要搞错。

 

(3)缺少相关依赖库

    C++编写的动态库依赖其它库,而相关依赖库并没有在安装目录和系统目录都没有,这时候可以使用DLL函数查看器或者Depends定位,导入相关库即可解决。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值