首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windeployqt不能找到所有依赖项

Windeployqt不能找到所有依赖项
EN

Stack Overflow用户
提问于 2017-01-11 07:00:06
回答 1查看 2.4K关注 0票数 1

我在发布模式下构建了我的Qt项目,并拥有.exe文件。我正在使用Qt 5.7 32-bit for Desktop (MSVC 2015)命令并运行C:\Qt\5.7\msvc2015\bin\windeployqt.exe my_app.exe

但是,在运行它时,windeployqt并没有找到所有的依赖项。我得到了这个输出。

代码语言:javascript
复制
Adding Qt5Svg for qsvgicon.dll
Direct dependencies: Qt5Core Qt5Gui Qt5Widgets
All dependencies   : Qt5Core Qt5Gui Qt5Widgets
To be deployed     : Qt5Core Qt5Gui Qt5Svg Qt5Widgets

当我尝试运行.exe文件时,仍然缺少Qt5Network.dllQt5xml.dllQt5XmlPatterns.dllQt5WebEngineWidgets.dllQt5WebEngineCore.dllQt5Quick.dll。它还缺少libeay32.dllssleay32.dll

在我的.pro文件中有QT += core gui xml xmlpatterns widgets webenginewidgets network

我一直在寻找这个问题的解决方案,尽管我可以手动复制粘贴它们,它也可以工作,或者使用-network -xml等添加它们,但我想看看是否有一种方法可以将所有依赖项添加到一起。

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 03:07:03

前言

我认为windeployqt目前不会尝试部署libeay32.dllssleay32.dll,因为它们不在c:\Qt\5.8\mingw53_32\bin\中(然而,它们在c:\Qt\Tools\mingw530_32\opt\bin\中)

如果windeployqt工作正常,那么windeployqt ./将部署所有没有参数的Qt all。

不幸的是,windeployqt仍然是错误的,因为有时它不创建所需的,而创建无用的。

因此,您可以添加必需的(例如--core)和跳过创建的无用(例如--no-svg):

windeployqt --compiler-runtime --core --gui --network --widgets --winextras --no-svg --no-system-d3d-compiler --no-translations --no-opengl-sw --no-angle ./

更多package_name和命令- https://doc.qt.io/qt-5/windows-deployment.html

回答

您可以创建变量QT的qmake解析器,将--添加到包名称中,并插入到windeployqt命令中:

代码语言:javascript
复制
DESTDIR = "path/to/dest"
QT     = core gui network widgets winextras

CONFIG( release, debug|release ) {
    PACKAGES = ""
    for(package,QT){
        PACKAGES += "--$${package} "
    }

    NO_PACKAGES = --no-svg \
        --no-system-d3d-compiler --no-translations --no-opengl-sw --no-angle

    RETURN = $$escape_expand(\n\t)

    # windeployqt
    QMAKE_POST_LINK += $$RETURN windeployqt --compiler-runtime \
        $${PACKAGES} $${NO_PACKAGES} \
        $$quote($$shell_path($$DESTDIR))

    # copy OpenSSL dlls
    OPENSSLFILES = $$shell_path($$PWD/../../bin_openssl_1.0.2h/*.dll)
    DDIR = $$shell_path($$DESTDIR)
    QMAKE_POST_LINK += $$RETURN $$QMAKE_COPY $$quote($$OPENSSLFILES) $$quote($$DDIR)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41579958

复制
相关文章

相似问题

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