我正在构建Qt应用程序,但是将应用程序移至另一台PC时遇到问题。当我运行.exe时,它总是说它缺少依赖项,一旦我将丢失的依赖项相互转移,就会弹出一个。我假设我需要在包含所有这些DLL的目标PC上安装一些东西。
Some of the missing dependencies so far:
MSVCP140D.dll
vcruntime140d.dll
api-ms-win-core-rtlsupport-l1-2-0.dll
我认为在我的构建PC上安装MSVS或MSVC可能会出现问题,因为我经常需要手动指出诸如UCRT之类的东西。
预先感谢
答案 0 :(得分:0)
缺少运行时 :这些文件显然是应用程序所需要的运行时的一部分(Visual C++ Redistributable for Visual Studio 2015-也许吗?),但看起来似乎还不止这些已分发了应用程序的调试版本,该版本将取决于运行时dll的调试版本(如MSVCP140 D .dll中的DLL名称以"d"
结尾)。这些通常仅安装在开发人员PC上,根本不分发到客户端PC。
发布版本 :也许尝试以发布模式构建应用程序,并尝试在客户端系统上运行该可执行文件。所需的运行时可能已经存在于其包装盒中,只是没有出现在调试版本中。
静态链接 :我想您也可以尝试静态链接(对于Microsoft运行时:How do I make a fully statically linked .exe with Visual Studio Express 2005?),如果那样的话可供您使用(在提供各种形式的许可的静态链接的可用性方面,Qt对此的处理不尽人意):MSVCP140.dll missing。只是提到了这一点:在概念上相同,对于Qt(许可问题?)和核心Microsoft运行时(请参见上面的链接),静态链接是不同的。使用二进制依赖项检查器来研究新的编译设置对依赖项的影响。
远程调试 :如果您需要使测试PC能够在调试模式下运行应用程序(可能用于远程调试,而无需安装所有Visual Studio,请执行以下操作):{ {3}}。
“ Hacky” :看来这是另一种“骇客”方法,我并不建议这样做:Preparing a Test Machine To Run a Debug Executable。对于其他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
。