0

我需要使用 Qt 5 构建一些 DLL,但我一定做错了,因为需要它的程序不工作。我知道有什么问题,因为当我在任何已构建的 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:我什至在 Qt 安装的 QtCored.dll 和其他 DLL 中出现错误:S 它可能什么都没有,也可能是错误的根源。

4

1 回答 1

2

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

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

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

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

  4. 您正在为您的编译器部署正确的 DLL - 包含 GCC 的 Qt 将具有两个版本的 DLL,一个是使用 GCC 构建的,您的程序将链接到另一个版本,另一个是使用预构建工具的 MSVC 构建的(例如qmake)将链接反对。

  5. 如果使用 MSVC,则您已安装所有服务包和更新,并且您发布的 MSVC 可再发行版与编译器完全匹配。

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

于 2014-05-13T22:59:33.877 回答