无法 运行 qt-creator 可执行文件输出 ide ide 在发布模式下编译
Unable to run qt-creator executable outside ide compiled in release mode
在切换到发布模式来构建我的一个小项目后,当我从 inside qt-creator ide 尝试 运行 它时,一切正常。但是当我转到文件夹 build-<project_name>-Desktop_Qt_5_14_1_MinGW_64_bit- Release
并尝试 运行 在此目录中生成的可执行文件时,我得到了这个错误:
有人知道这里有什么问题吗?如果它是一些缺少的 dll,我想它会指定缺少什么 dll,对吗?还是我记错了?
更新
在 运行 windeployqt
之后,此命令找到了我的应用程序的依赖项,创建了一些文件夹,但现在我在尝试 运行 时遇到了错误:
更新 2
在 运行 实用程序 dependency walker
之后,我得到了这个错误:
我正在使用这个构建工具包在 qt-creator 中构建项目:
以下是我对 Windows 上 Qt 部署和问题的全部了解。
- 检查您的项目的发布配置是否不包含指向任何调试版本库的链接。
- 在发布模式下构建您的应用程序。使用Rebuild,如有疑问。 查看 IDE 中的编译输出 window,它实际使用的路径。
- 使用 windeployqt 工具自动将所有必需的 Qt dll 复制到可执行文件的文件夹中。确保您使用的 windeployqt.exe 来自正确的文件夹 。例如,目前我有一个版本的 Qt 框架,但是有两个版本的 windeployqt:用于 x86 和 x64 编译器。如果您安装了多个版本的 Qt,则可能有多个版本的工具。
。
C:\Qt\Qt5.14.1.14.1\msvc2017\bin\windeployqt.exe
C:\Qt\Qt5.14.1.14.1\msvc2017_64\bin\windeployqt.exe
将编译器库复制到发布文件夹。确保您从用于构建的确切编译器中复制库。
复制所有必要的附加第 3 方动态库。确保它不是调试版本。
如果问题仍然存在,请在错误消息激活时按 Ctrl+C
。它将复制消息框中的所有文本。将消息的主要部分粘贴到 Google。
如果问题仍然存在,请在某些 dll 依赖项查看器中打开您的 .exe 文件。这是我如何在 Lister. Be note that such a tool will show you not only missing dlls, but also a full path for each dll that your executable actually use. More power tool is Dependency Walker.
中看到的
确保您的应用程序不会在没有相应权限的情况下尝试将某些内容写入系统保护的文件夹,例如 c:\Program Files\
。
如果问题仍然存在,尽可能简化您的项目。 运行 发布一个空项目。然后逐步添加模块、功能和库。
如果一切正常,请在完全干净的虚拟机上测试应用程序。
编辑。 我 google 你的错误文本和我发现的内容:
https://android.developreference.com/article/11361766/Qt5+deployment+%E2%80%9Cprocedure+entry+point+could+not+be+located%E2%80%9D
The problem was that windeployqt was unable to locate gcc for some
reason. I added it to my path from cmd with SET
PATH=%PATH%;C:\Qt\Tools\mingw530_32\bin. After I ran windeployqt
again, I did not have to copy libgcc_s_dw2-1.dll and
libwinpthread-1.dll over manually and it used the correct Qt5Core.dll,
since the application is now working fine.
Edit2。 删除了多余的项目。
在切换到发布模式来构建我的一个小项目后,当我从 inside qt-creator ide 尝试 运行 它时,一切正常。但是当我转到文件夹 build-<project_name>-Desktop_Qt_5_14_1_MinGW_64_bit- Release
并尝试 运行 在此目录中生成的可执行文件时,我得到了这个错误:
有人知道这里有什么问题吗?如果它是一些缺少的 dll,我想它会指定缺少什么 dll,对吗?还是我记错了?
更新
在 运行 windeployqt
之后,此命令找到了我的应用程序的依赖项,创建了一些文件夹,但现在我在尝试 运行 时遇到了错误:
更新 2
在 运行 实用程序 dependency walker
之后,我得到了这个错误:
我正在使用这个构建工具包在 qt-creator 中构建项目:
以下是我对 Windows 上 Qt 部署和问题的全部了解。
- 检查您的项目的发布配置是否不包含指向任何调试版本库的链接。
- 在发布模式下构建您的应用程序。使用Rebuild,如有疑问。 查看 IDE 中的编译输出 window,它实际使用的路径。
- 使用 windeployqt 工具自动将所有必需的 Qt dll 复制到可执行文件的文件夹中。确保您使用的 windeployqt.exe 来自正确的文件夹 。例如,目前我有一个版本的 Qt 框架,但是有两个版本的 windeployqt:用于 x86 和 x64 编译器。如果您安装了多个版本的 Qt,则可能有多个版本的工具。
。
C:\Qt\Qt5.14.1.14.1\msvc2017\bin\windeployqt.exe
C:\Qt\Qt5.14.1.14.1\msvc2017_64\bin\windeployqt.exe
将编译器库复制到发布文件夹。确保您从用于构建的确切编译器中复制库。
复制所有必要的附加第 3 方动态库。确保它不是调试版本。
如果问题仍然存在,请在错误消息激活时按
Ctrl+C
。它将复制消息框中的所有文本。将消息的主要部分粘贴到 Google。如果问题仍然存在,请在某些 dll 依赖项查看器中打开您的 .exe 文件。这是我如何在 Lister. Be note that such a tool will show you not only missing dlls, but also a full path for each dll that your executable actually use. More power tool is Dependency Walker.
中看到的
确保您的应用程序不会在没有相应权限的情况下尝试将某些内容写入系统保护的文件夹,例如
c:\Program Files\
。如果问题仍然存在,尽可能简化您的项目。 运行 发布一个空项目。然后逐步添加模块、功能和库。
如果一切正常,请在完全干净的虚拟机上测试应用程序。
编辑。 我 google 你的错误文本和我发现的内容:
https://android.developreference.com/article/11361766/Qt5+deployment+%E2%80%9Cprocedure+entry+point+could+not+be+located%E2%80%9D
The problem was that windeployqt was unable to locate gcc for some reason. I added it to my path from cmd with SET PATH=%PATH%;C:\Qt\Tools\mingw530_32\bin. After I ran windeployqt again, I did not have to copy libgcc_s_dw2-1.dll and libwinpthread-1.dll over manually and it used the correct Qt5Core.dll, since the application is now working fine.
Edit2。 删除了多余的项目。