C#调用C++ 库 DLL not find,有时提示的是BadImageFormaExection,很烦人的一个错误
可能原因:
(1)可能真没有那个DLL或者文件名写错了
首先查看一下路径下有没有该dll,注意X86和AnyCPU的路径是不一样的,如果要打包X86,必须保证X86想要目录下有相应的库文件
(2)用户没有装vc运行库,或者安装的VC库与发布的不匹配
用户系统是新装的,VC运行库什么的都没有,而测试要求必须满足能在新系统上跑!这种时候一般有两种做法,一是在打包的时候放入相关动态库,二是安装/启动的时候,检查系统有没有安装相应的VC库,在线安装VC库。这里我介绍第一种:
在开发机上打开 C:WindowsSysWOW64 (不是C:WindowsSystem32)目录,复制相应VC版本的库到安装包中,比如如果VC库是VC2015的,复制vcruntime140.dll、vccorlib140.dll、vcomp140.dll等到相应目录下,一般可以解决该问题。这种做法对VC2017运行库以下的起效,VC2017是不起作用的。(如果知道怎么部署VC2017的,麻烦说明一下)。
vccorlib140d.dll是debug版的,用户一般安装的是Release版的,不要搞错。
(3)缺少相关依赖库
C++编写的动态库依赖其它库,而相关依赖库并没有在安装目录和系统目录都没有,这时候可以使用DLL函数查看器或者Depends定位,导入相关库即可解决。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!