构建DLL时我一定做错了

时间:2014-05-13 06:35:34

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

我需要使用Qt 5构建一些DLL,但是由于需要它的程序isnt working,我必须做错事。我知道有一些错误,因为当我在任何构建的dll上运行依赖walker时,它表示存在错误的链接或者它找不到某些DLL:

enter image description here

我相信这是因为有些东西是x64bits而有些东西是x32bits。我正在64位平台上工作,但我正在尝试使用32位DLL构建一个32位应用程序。我使用32位mingw编译器,32位Qt版本,32位除OS之外的一切。说实话,我相当新手,我有点失落,有人能指出我正确的方向吗?我的编译有什么问题?

这是显示的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它可能没什么,或者它可能是错误的来源。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

  5. 如果使用MSVC,您已安装所有Service Pack和更新,并且您发布的MSVC可重新分发与编译器完全匹配

  6. 如果我错过了某些内容,这是非常棘手的,请告诉我。