【问题标题】:I must be doing something wrong when building DLLs构建 DLL 时我一定做错了什么
【发布时间】:2014-06-30 17:08:49
【问题描述】:

我需要使用 Qt 5 构建一些 DLL,但我一定做错了,因为程序需要它 isnt working。我知道有问题,因为当我在任何已构建的 dll 上运行依赖项walker 时,它说存在错误的链接或找不到某些 DLL:

我相信这是因为有些东西是 x64 位,而另一些是 x32 位。我正在一个 64 位平台上工作,但我正在尝试使用 32 位 DLL 构建一个 32 位应用程序。我使用 32 位 mingw 编译器、32 位 Qt 版本、32 位除操作系统之外的所有内容。老实说,我对此很陌生,而且我有些迷茫,有人能指出我正确的方向吗?我的编译出了什么问题?

这是所示 DLL 的 .pro 文件:

TEMPLATE = lib
TARGET = QENC
DESTDIR = ../release
QT += core gui widgets
CONFIG += release
DEFINES += QENC_LIB QT_DLL
INCLUDEPATH += ./GeneratedFiles \
    ./GeneratedFiles/Release \
    . \
    ../../../proj-4.8.0/src
DEPENDPATH += .
MOC_DIR += ./GeneratedFiles/release
DLLDESTDIR += release
OBJECTS_DIR += release
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
include(QENC.pri)

PS:我什至在 QtCored.dll 和 Qt 安装的其他 DLL 中遇到错误:S 这可能什么都没有,也可能是错误的根源。

【问题讨论】:

  • 你能发布你的专业文件吗?问题可能就在那里。
  • @Amarghosh 完成!虽然我不知道这是否是问题所在,因为一些 DLL 是从 Internet 下载的源代码,它们确实为其他人工作。
  • 对于丢失的 dll 文件,请确保它们的路径在 LIBS 变量中指定为 LIBS += -Wl,--rpath,/path/to/downloaded-dlls(或其 Windows 等效项)。或者您可以使用相当于LD_LIBRARY_PATH 的windows。如果在下载的 dll 上看到了 different-cpu-type 错误,您可能需要为您的平台下载正确的文件(其他文件可能在不同版本的操作系统或 CPU 上)。
  • 我认为你这边没有错。 Dependency walker is just not able to find the dlls.

标签: c++ qt dll 32bit-64bit dependency-walker


【解决方案1】:

在 Windows 上部署时要检查的事项:

  1. 在发布模式下构建 - 在 PRO 文件中,您有 CONFIG += release,所以这应该没问题,您可能还想添加一个 CONFIG -= debug debug_and_release 行,以确保

  2. 如果使用 MSVC - 链接到 C 库 (/MD) 的发布版本而不是调试 (/MDd)

  3. 您正在部署 Qt DLL (QtCore4.dll) 的发布版本,而不是在末尾使用 d 进行调试 (QtCored4.dll)

  4. 1234563 -内置工具(如qmake)将链接到。
  5. 如果使用 MSVC,则您已安装所有服务包和更新,并且您发布的 MSVC 可再发行版与编译器完全匹配

这很难纠正,如果我遗漏了什么,请告诉我。

【讨论】:

  • 我确实遇到了 MSVC 的问题,虽然它在运行主程序时(我想我正在构建库),你能看看这个,看看有什么问题吗? stackoverflow.com/questions/23539820/…它有赏金!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-05
相关资源
最近更新 更多