我正在构建一个Qt应用程序,但当我将应用程序移动到另一台电脑时遇到了问题。当我运行.exe时,它一直说它缺少依赖项,一旦我将缺少的依赖项转移到另一个,就会弹出一个。我想我需要在目标电脑上安装一些包含所有这些DLL的东西。
Some of the missing dependencies so far:
MSVCP140D.dll
vcruntime140d.dll
api-ms-win-core-rtlsupport-l1-2-0.dll
我认为在我的构建pc上安装MSVS或MSVC可能会有问题,因为我经常不得不手动指向UCRT之类的东西。
提前感谢
缺少运行时
:这些文件显然是应用程序所需的运行时的一部分(Visual C++Redistributable for Visual Studio 2015-也许?(,但更重要的是,您似乎已经分发了应用程序的调试版本,该版本将取决于运行时dll的调试版本(dll名称以"d"
结尾,如MSVCP140D.dll(。这些通常只安装在开发人员PC上,根本不用于分发到客户端PC。
Release Build :也许可以尝试在发布模式下构建应用程序,并尝试在客户端系统上运行该可执行文件。所需的运行时可能已经出现在它们的框中,只是不在调试版本中。
静态链接 :我想您也可以尝试静态链接(对于Microsoft运行时:如何使用Visual Studio Express 2005制作完全静态链接的.exe?(,如果您可以使用的话(就不同形式的许可的静态链接的可用性而言,我无法跟上Qt对此的处理(:缺少MSVCP140.dll。正如上面所提到的:从概念上讲,相同的想法,静态链接对于Qt(许可问题?(和核心Microsoft运行时是不同的(见上面的链接(。使用二进制依赖项检查器来调查依赖项是如何随着新的编译设置而更改的。
远程调试 :如果您需要使测试PC能够在调试模式下运行应用程序(可能用于远程调试而不安装所有Visual Studio(:准备测试计算机以运行调试可执行文件。
"Hacky">
:这似乎是另一种我并不真正推荐的"更黑客"的方法:安装VC++Debug Runtime Distributable。对于其他Visual Studio版本,请查找debug_nonredist
文件夹Debug versions of an application are not redistributable, and debug versions of the Visual C++ library DLLs are not redistributable. Very important
。