我在Qt 6.7.2版本中准备了一个综合项目,并使用windeployqt方法编译了我的项目。这个项目是我在Windows 11操作系统上编译的,可以在Windows 11和Windows 10平台上运行。
但是,它在某些 Windows 操作系统(尤其是新格式化的操作系统)上无法打开。由于它没有显示任何错误消息,我无法理解为什么它打不开。
当我使用 Dependency Walker 扫描 Qt 项目打开和未打开的计算机之间丢失的
.dll
文件时,我注意到项目未打开的计算机上缺少以下 DLL 文件:
api-ms-win-core-atoms-l1-1-0.dll
api-ms-win-core-comm-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-delayload-l1-1-0.dll
api-ms-win-core-enclave-l1-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-io-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-private-l1-1-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-memory-l1-1-1.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-normalization-l1-1-0.dll
api-ms-win-core-privateprofile-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-processtopology-l1-1-0.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-psapi-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
api-ms-win-eventing-provider-l1-1-0.dll
api-ms-win-mm-misc-l1-1-0.dll
api-ms-win-security-base-l1-1-0.dll
api-ms-win-service-core-l1-1-0.dll
api-ms-win-service-management-l1-1-0.dll
api-ms-win-service-management-l2-1-0.dll
api-ms-win-service-private-l1-1-0.dll
api-ms-win-service-winsvc-l1-1-0.dll
concrt140.dll
dcomp.dll
dwrite.dll
dwrite_3.dll
dwrite_6.dll
gdiplus.dll
mmdevapi.dll
msvcp140.dll
ucrtbase.dll
vccorlib140.dll
vcruntime140.dll
尽管我把这些DLL文件一一收集起来并添加到我的项目中,但还是不起作用。我认为这些是Windows系统DLL文件,我不知道如何将它们集成到操作系统中。我也不知道问题是不是这个原因造成的。
我确信编译没有错误,因为该应用程序可以在大多数计算机上打开。我在新格式化的 Windows 平台上遇到此问题。
通常,C++ 应用程序会在某些 Windows 安装上崩溃,但在其他 Windows 安装上不会崩溃,因为没有安装匹配的 Microsoft Visual Studio Redistributable 软件包。确保它存在的最佳方法是将其包含在安装程序中。