如何在Qt Creator中正确链接外部DLL

3
我正在尝试构建在uconfig发现的项目,该项目需要poppler,作者提供了预先构建的链接headersDLLS
我已经下载了它们,这是项目的结构。

enter image description here

dll文件夹包含所有DLL文件,poppler文件夹包含头文件,pdf_extract.pro文件包含以下内容。

QT     += core gui widgets xml

TARGET = pdf_extract
TEMPLATE = lib
DEFINES += DATASHEET_EXTRACTOR_EXPORT_LIB
DESTDIR = "$$PWD/../../bin"

CONFIG(release, debug|release) {
    CONFIG += optimize_full
}

SOURCES += \
    $$PWD/datasheet.cpp \
    $$PWD/datasheetpackage.cpp \
    $$PWD/datasheetpin.cpp \
    $$PWD/datasheetbox.cpp \
    $$PWD/pdfdebugwidget/pdfdebugwidget.cpp \
    $$PWD/pdfdebugwidget/pdfdebugviewer.cpp \
    $$PWD/pdfdebugwidget/pdfdebugscene.cpp \
    $$PWD/pdfdebugwidget/pdfdebugitempage.cpp \
    $$PWD/pdfdebugwidget/pdfdebugitempin.cpp \
    $$PWD/pdfdebugwidget/pdfdebugitemtextbox.cpp \
    $$PWD/model/pdfdatasheet.cpp \
    $$PWD/model/pdfpage.cpp \
    $$PWD/model/pdftextbox.cpp \
    $$PWD/model/pdfpin.cpp \
    $$PWD/model/pdfcomponent.cpp \
    $$PWD/controller/pdfloader.cpp

HEADERS += \
    $$PWD/pdf_extract_common.h \
    $$PWD/datasheet.h \
    $$PWD/datasheetpackage.h \
    $$PWD/datasheetpin.h \
    $$PWD/datasheetbox.h \
    $$PWD/pdfdebugwidget/pdfdebugwidget.h \
    $$PWD/pdfdebugwidget/pdfdebugviewer.h \
    $$PWD/pdfdebugwidget/pdfdebugscene.h \
    $$PWD/pdfdebugwidget/pdfdebugitempage.h \
    $$PWD/pdfdebugwidget/pdfdebugitempin.h \
    $$PWD/pdfdebugwidget/pdfdebugitemtextbox.h \
    $$PWD/model/pdfdatasheet.h \
    $$PWD/model/pdfpage.h \
    $$PWD/model/pdftextbox.h \
    $$PWD/model/pdfpin.h \
    $$PWD/model/pdfcomponent.h \
    $$PWD/controller/pdfloader.h

LIBS += -L"$$PWD/../../bin"
LIBS += -L"$$PWD/dll/jpeg62.dll"
LIBS += -L"$$PWD/dll/libfreetype-6.dll"
LIBS += -L"$$PWD/dll/libopenjp2.dll"
LIBS += -L"$$PWD/dll/libpng12.dll"
LIBS += -L"$$PWD/dll/libpoppler-80.dll"
LIBS += -L"$$PWD/dll/libpoppler-qt5.dll"
LIBS += -L"$$PWD/dll/libtiff3.dll"
LIBS += -L"$$PWD/dll/zlib1.dll"

INCLUDEPATH += $$PWD/../../


LIBS += -lkicad

macx {
    LIBS += -L /usr/local/lib
    INCLUDEPATH += /usr/local/include 
}

然而,当我尝试构建项目时,我遇到了这些错误......我不确定我做错了什么或者漏掉了什么。

enter image description here

2个回答

3
根据 qmake文档,使用unix标准来指定链接库也适用于Windows系统。无论如何,不要使用Original Answer中的方式。
LIBS += -L"$$PWD/dll/jpeg62.dll"

我会尝试。 最初的回答。
LIBS += "-L$$PWD/dll" - ljpeg62

最初的回答。
或者直接使用Windows风格:
LIBS += $$PWD/dll/jpeg62.dll

我使用了这个格式 LIBS += $$PWD/dll/jpeg62.dll,看起来好像可以工作,谢谢。 - undefined

0

虽然已经晚了两年,但我也一直在想,

#include <QLibrary>

将您的*.dll文件放置在Debug/Release文件夹中,例如:

build-test-Desktop_Qt_6_1_2_MinGW_64_bit-Debug/debug

现在只需:

QLibrary lib("myLibrary.dll");

if (!lib.load())
    qDebug() << lib.errorString();
if (lib.load())
    qDebug() << "library loaded";

或者,你可以将DLL文件放在Debug文件夹之外,并将其位置设置为:

c:/path/to/dll/yourdll.dll


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接