为啥我的 Qt 应用程序在计算机上请求 msvcp120d.dll 而不是我的

Posted

技术标签:

【中文标题】为啥我的 Qt 应用程序在计算机上请求 msvcp120d.dll 而不是我的【英文标题】:Why my Qt app request msvcp120d.dll on a computer but not mine为什么我的 Qt 应用程序在计算机上请求 msvcp120d.dll 而不是我的 【发布时间】:2016-04-01 16:36:31 【问题描述】:

我用 Qt5.5 做了一个应用程序,它使用 open cv。 它可以工作,所以现在我想在多台计算机上部署它。

在第一台 PC (PC1) 上,它也可以工作:我复制了 Qt 的 dll 并打开 cv 并在环境变量中添加路径。我用我的应用程序、一些 dll 和数据(图像)复制了一个文件夹。

在第二台 PC (PC2) 上,我做了同样的事情,但我无法打开应用程序。我有错误“msvcp120d.dll 丢失..”。

我在发布模式下编译了我的应用程序。 在我的 PC 和 PC1 上,我将 msvcp120d.dll 移到了桌面上,但应用程序没有请求它。 您知道应用程序为何要求调试 dll 吗? 我很快在 PC2 上安装了可再发行包 Visual C++(x64 和 x86),但它没有安装 msvcp120d.dll。

你还有别的想法吗? 谢谢'

【问题讨论】:

【参考方案1】:

您正在使用的某些库似乎链接到 Debug CRT 库(由“msvcp120d.dll”中的尾随 d 表示)。这些不可再分发,并且仅在安装了 Visual Studio 的系统上可用。

我建议使用dependency walker 找出需要调试版本的dll/库,然后将它们重新编译为发布配置。

【讨论】:

我注意到如果没有opencv的调试库,应用程序将无法运行,所以可能是这样。但是我在 qmake 中评论了调试的库。所以我不知道为什么它要求这个..? (我已经运行了 qmake 并且我让 opencv 的发布库)

以上是关于为啥我的 Qt 应用程序在计算机上请求 msvcp120d.dll 而不是我的的主要内容,如果未能解决你的问题,请参考以下文章

vs2012 qt运行opengl程序后 报错计算机中缺失msvcp110d.dll,网上方法均无效

在win-10中部署的qt-designer项目在win-7中不起作用

程序无法启动,因为您的计算机缺少 MSVCP90D.dll

在不同的计算机上运行 Qt 应用程序

代码执行无法继续,因为找不到 MSVCP100D.dll [重复]

MSVCP140.dll 是不是依赖于操作系统/版本?