【问题标题】:QtCreator (2.8.0), using shared librariesQtCreator (2.8.0),使用共享库
【发布时间】:2013-08-09 16:20:14
【问题描述】:

我使用 Qt 5.1 和 QtCreator 2.8.0 开发了一个 GUI 应用程序,并且我正在使用一个共享库(也使用 Qt 5.1 编译)。 这是我在 .pro 文件中使用的:

INCLUDEPATH += ../MyLib
QMAKE_LIBDIR += ../MyLib/build/release
LIBS += -lMyLib

关于“运行配置”(QtCreator)和在 Linux(Ubuntu 12.04)下,我将 LD_LIBRARY_PATH 设置为“(...)/MyLib/build/release”,它运行良好。但是,在 Windows 上,将库路径 (.dll) 附加到 PATH 不起作用。我没有收到任何编译或链接错误,但是当我运行应用程序时它会立即退出。如果我将 .dll 放在与可执行文件相同的文件夹中,它运行没有任何问题。我错过了什么吗?

【问题讨论】:

    标签: qt shared-libraries environment-variables


    【解决方案1】:

    根据您提供的信息很难说。如果您将其路径放入 PATH,Windows 肯定会找到该 dll。但也许你的dll使用了另一个dll,它不在正常的搜索路径中?

    你可能想试试依赖walker:http://www.dependencywalker.com/

    如果你的 dll 是基于 Qt 的,可能是它没有找到必要的 qt 插件。

    看看这个:http://qt-project.org/doc/qt-4.8/deployment-windows.html#application-dependencies

    Qt 4,但 Qt 5 在这方面是一样的。

    【讨论】:

    • 我明白这一点。但它唯一遗漏的 .dll 是我使用相同工具链 (Qt5.1) 构建的共享库,因为如果我将相同的 .dll 放在 GUI 应用程序可执行文件的文件夹中,它可以毫无问题地运行。我尝试从 QtCreator 的“运行设置”以及使用 Windows 的 System>Environment Variables 对话框更改 PATH,结果相同。我使用的是Win7 64位。
    • 我在这里猜测了一下,但我仍然认为您的 Qt 库找不到它的插件。只是为了排除这种情况,您可以将您的 qt 插件添加到您的 PATH 变量中吗?不知道在 Windows 上哪里可以找到。它们位于 Qt 安装的插件文件夹中。您的程序也必须可以找到它们。而且我不是 100% 确定当您仅​​移动库时就是这种情况。但正如我所说:一个疯狂的猜测。对于 Windows/Qt 安装,我不是很自信。
    • 解决了!好吧,因为 QtCreator 允许我“临时”编辑 PATH 变量(我在运行设置上使用“清洁环境”选项),所以我将其保持在最低限度。我刚刚添加了与 Qt 和我的共享库相关的路径,现在它可以工作了。感谢您的头脑风暴!
    猜你喜欢
    • 2018-04-13
    • 2015-09-30
    • 1970-01-01
    • 2021-11-18
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多