【问题标题】:Qt application asking for dlls which are not usedQt 应用程序请求未使用的 dll
【发布时间】:2014-04-07 08:03:07
【问题描述】:

我已经制作了一个 Qt 应用程序。我已将必要的 dll 复制到应用程序文件夹中,例如 QT5CORE.DLL 、 QT5GUI.DLL 、 QT5WIDGETS.DLL 但应用程序要求提供诸如 Qt5Positioning.dll、Qt5Sensors.dll、Qt5PrintSupport.dll、Qt5Qml.dll 等 dll 等,即使它们不在程序中使用。 我在应用程序启动时收到此类错误 “此程序无法启动,因为您的计算机中缺少 blahblah.dll。重新安装可能会解决此问题。”

我在 Qt5.2.1 中遇到此错误,我正在使用 VS 2010。

这是 .pro 文件:

TEMPLATE = app
TARGET = mainwindow
DESTDIR = ../Win32/Release
QT += core network widgets gui webkitwidgets
CONFIG += release
DEFINES += WIN64 QT_DLL QT_NETWORK_LIB QT_WIDGETS_LIB QT_WEBKITWIDGETS_LIB
INCLUDEPATH += ./GeneratedFiles \
. \
./GeneratedFiles/Release
DEPENDPATH += .
MOC_DIR += ./GeneratedFiles/release
OBJECTS_DIR += release
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
include(mainwindow.pri)
win32:RC_FILE = mainwindow.rc

【问题讨论】:

  • 您在使用 Qt Plugin for Visual Studio 吗?如果是这样,您可以检查应用程序中包含的模块的 Qt 项目设置。也许那里出于某种原因检查了所需的那些。
  • 您也可以将 Qt bin 文件夹添加到您的 PATH 中。 VS2010 会在链接过程中自动在该目录中查找 DLL。
  • 是的,我正在使用 Qt Plugin for Visual Studio。我在创建项目时选择了以下 Qt 模块:Core、GUI、Network、Webkit Widgets、Widgets。我没有选择任何其他模块,但为什么应用程序要求提供 dll 文件,例如 Qt5Multimedia.dll、Qt5Qml 等?
  • @ManuelH 我已经添加了路径并且在 VS 中运行良好。但我想发布我的程序,不想将这些不必要的 dll 与我的程序一起发布。
  • 你肯定没有使用任何可能来自这些 dll 的函数?我不确定它们属于哪个模块,以及是否需要在设置中检查其他模块。如果不是,请尝试取消选择一些并重新编译

标签: qt dll qt5 qt5.2


【解决方案1】:

WebKitWidgets 依赖的模块:

  • Qt5MultimediaWidgets.dll
  • Qt5OpenGL.dll
  • Qt5PrintSupport.dll
  • Qt5WebKit.dll
  • Qt5Multimedia.dll
  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Sensors.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • MSVCP100.dll 和 MSVCR100.dll
  • (KERNEL32.dll)

这就是您需要这些 DLL 的原因。如果您不想发布所有这些,请考虑删除 webkitwidgets 模块。

您可以使用 dependency walker 或 CFF 资源管理器等工具检查您的应用程序依赖项。当您遇到此类问题时,这些工具会很有帮助,您可以轻松探索依赖关系和依赖关系的依赖关系;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多