我需要使用Qt 5构建一些DLL,但是由于需要它的程序isnt working,我必须做错事。我知道有一些错误,因为当我在任何构建的dll上运行依赖walker时,它表示存在错误的链接或者它找不到某些DLL:
我相信这是因为有些东西是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它可能没什么,或者它可能是错误的来源。
答案 0 :(得分:2)
在Windows上部署时要检查的事项:
内置发布模式 - 在PRO文件中你有CONFIG += release
所以这应该没问题,你可能还想添加一个CONFIG -= debug debug_and_release
行,只是为了确保
如果使用MSVC - 链接到C库的发布版本(/MD
)而不是调试(/MDd
)
您正在部署Qt DLL的发布版本(QtCore4.dll
)而不是使用 d 进行调试(QtCored4.dll
)
您正在为您的编译器部署正确的DLL - 包含GCC的Qt将包含两个版本的DLL,一个是用程序将链接的GCC构建的,另一个是用MSVC构建的 - 建立工具(如qmake
)将链接。
如果使用MSVC,您已安装所有Service Pack和更新,并且您发布的MSVC可重新分发与编译器完全匹配。
如果我错过了某些内容,这是非常棘手的,请告诉我。