当尝试运行windeployqt.exe时,它如何知道在哪里查找Qt库?
我正在使用Windows,QT5.3,msvc2013_opengl。
我有以下设置:
C:/PathA/Qt/5.3。在那里效果很好。C:/PathB/Qt/5.3C:/PathA/重命名为C:/PathC/,以“隐藏”原来的位置。运行C:/PathB/Qt/5.3/.../windeployqt.exe时,它会抱怨无法读取文件C:/PathA/.../QtPrintSupport.dll -当然,因为该文件已经不存在了.
我试过:
PathA并重新启动。PathA。PathB和PathC中都包含相对路径。qmake -query。qmake.exe -query”--它们按预期返回PathB和PathC。尽管如此,windeployqt仍然坚持搜索C:/PathA --那么它从哪里得到这个值呢?
PS:我知道我可以尝试卸载所有版本的Qt,摆脱所有与Qt相关的东西,然后从头开始重新安装它。然而,这不是我感兴趣的。我感兴趣的是允许安装在彼此旁边的多个版本的Qt,并控制使用哪一个版本(使用CMake和Visual )。
编辑:与这个问题不同,我没有使用QtCreator,这个问题的范围不是“如何在使用QtCreator时安装多个版本的Qt?”。具体的问题是“windeployqt.exe从哪里获得到Qt库的路径?”
发布于 2019-09-20 12:06:29
引用此页
windeployqt接受一个.exe文件或包含一个.exe文件的目录作为参数,并扫描可执行文件以确定依赖项.然后将标识的依赖项复制到可执行文件的目录中。Qt5Core.dll中的硬编码局部路径被替换为相对路径。
因此,您可能要在Qt5Core.dll中查找这些硬编码路径,您可以使用十六进制编辑器查找"qt_prfxpat“。
发布于 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。qmake.exe,则使用其中的qt_binspath。windeployqt将失败,“无法查询qmake: CreateProcessW失败”。感谢Pedro对硬编码值的提示以及使用十六进制编辑器的建议。
https://stackoverflow.com/questions/58019770
复制相似问题