首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windeployqt.exe将Qt目录存储在哪里?

windeployqt.exe将Qt目录存储在哪里?
EN

Stack Overflow用户
提问于 2019-09-19 22:52:17
回答 2查看 889关注 0票数 0

当尝试运行windeployqt.exe时,它如何知道在哪里查找Qt库?

我正在使用Windows,QT5.3,msvc2013_opengl。

我有以下设置:

  • 第一次提取Qt为C:/PathA/Qt/5.3。在那里效果很好。
  • 我把Qt复制到C:/PathB/Qt/5.3
  • 然后,我将文件夹C:/PathA/重命名为C:/PathC/,以“隐藏”原来的位置。

运行C:/PathB/Qt/5.3/.../windeployqt.exe时,它会抱怨无法读取文件C:/PathA/.../QtPrintSupport.dll -当然,因为该文件已经不存在了.

我试过:

  • 在shell中本地重写环境变量。
  • 从环境变量中删除所有出现的PathA并重新启动。
  • 在注册表中搜索PathA
  • 选中的qt.conf在PathBPathC中都包含相对路径。
  • 检查了windeployqt的源代码--它似乎调用了qmake -query
  • 名为“两个qmake.exe -query”--它们按预期返回PathBPathC
  • 更改两个qtenv2.bat中的路径。

尽管如此,windeployqt仍然坚持搜索C:/PathA --那么它从哪里得到这个值呢?

PS:我知道我可以尝试卸载所有版本的Qt,摆脱所有与Qt相关的东西,然后从头开始重新安装它。然而,这不是我感兴趣的。我感兴趣的是允许安装在彼此旁边的多个版本的Qt,并控制使用哪一个版本(使用CMake和Visual )。

编辑:与这个问题不同,我没有使用QtCreator,这个问题的范围不是“如何在使用QtCreator时安装多个版本的Qt?”。具体的问题是“windeployqt.exe从哪里获得到Qt库的路径?”

EN

回答 2

Stack Overflow用户

发布于 2019-09-20 12:06:29

引用此页

windeployqt接受一个.exe文件或包含一个.exe文件的目录作为参数,并扫描可执行文件以确定依赖项.然后将标识的依赖项复制到可执行文件的目录中。Qt5Core.dll中的硬编码局部路径被替换为相对路径。

因此,您可能要在Qt5Core.dll中查找这些硬编码路径,您可以使用十六进制编辑器查找"qt_prfxpat“。

票数 1
EN

Stack Overflow用户

发布于 2019-09-20 22:57:05

据我所知,命令如下:

  • 如果在路径中的某个目录中找到带有qmake.exe文件的qt.conf,则windeployqt使用<path to qmake&qt.conf>/<prefix in qt.conf>/bin
  • 否则,如果在与qmake.exe相同的目录中找到windeployqt.exe,则使用qmake.exe中的硬编码路径qt_binspath
  • 否则,如果在PATH中找到qmake.exe,则使用其中的qt_binspath
  • 否则,windeployqt将失败,“无法查询qmake: CreateProcessW失败”。

感谢Pedro对硬编码值的提示以及使用十六进制编辑器的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58019770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档