EXE程序缺DLL怎么办

起因

工程师发给用户一个VS编译的windows应用程序,客户反应打不开,报缺少dll。可是dll明明就在当前目录啊,为什么还会报错呢?

那应该是该DLL依赖的其它DLL不存在导致的,用depends软件打开看看依赖吧。不看不知道,一看吓一跳,缺的DLL还不少,MSVCP140D.DLL, VCRNTIME140D.DLL, UCRDBASED.DLL

那么怎么办?是不是从DLL下载的网站直接下载最新版本放到当前目录呢?

解决方法

解决问题以前先要搞清楚为什么会出现这个问题。

  • 工程师给客户的是DEBUG版本的DLL,通过depends软件也可以看到,缺少的MSVCP140D.DLL, VCRNTIME140D.DLL, UCRDBASED.DLL均为VS2015 runtime的debug版本,在你不安装VS完整环境的情况下,仅仅安装runtime也是不行的,因为runtime只有发布版本,即不带D后缀的DLL;

那么怎么办?有3个办法

1、装一个完整的VS,会很耗时间;

2、如果非要给debug版本的DLL,那么建议生成DLL的时候选择静态链接,对应不要选择多线程调试DLL类型,而是选择多线程调试MTD,这样对应依赖的DLL就会被包含在目标DLL中,也不需要安装runtime;

3、给用户release发布版本,同时安装VS runtime运行时,如果不想安装运行时,也要选择安装静态链接。

posted @   Hello-FPGA  阅读(1142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示