在另一个 QT 项目中包含一个 QT 库

Including a QT library in another QT project

我正在尝试包含我在 QT 项目中编写的库。我已将库导入到项目中,并包含了头文件。但是,当我尝试在我的库中构建引用任何 类 的项目时,我得到一个 LNK2001: unresolved external symbol error 我还是 QT 的新手,我确信有一个简单的错误修复我做了,但我无法在其他地方找到它。

.pro 文件:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = SL-Reporter
TEMPLATE = app

SOURCES += main.cpp\
        SLReportMainWindow.cpp \
    ProjectEditorWindow.cpp \
    OptionsWindow.cpp \
    FileManager.cpp \
    Project.cpp

HEADERS  += SLReportMainWindow.h \
    ProjectEditorWindow.h \
    OptionsWindow.h \
    FileManager.h \
    Project.h \
    CPPRTF/ColorOutOfRangeException.h \
    CPPRTF/cpprtf_global.h \
    CPPRTF/Exception.h \
    CPPRTF/InvalidFontException.h \
    CPPRTF/RTFColor.h \
    CPPRTF/RTFDocument.h \
    CPPRTF/RTFFont.h \
    CPPRTF/RTFObject.h \
    CPPRTF/RTFTextElement.h

FORMS    += SLReportMainWindow.ui \
    ProjectEditorWindow.ui \
    OptionsWindow.ui

DISTFILES += \
    ../SL-Compare/SLCompare \
    CPPRTF/CPPRTF.lib \
    CPPRTF/CPPRTFd.lib \
    CPPRTF/CPPRTF.dll

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../CPPRTF/build-CPPRTF-Desktop_Qt_5_7_0_MSVC2015_64bit-Debug/release/ -lCPPRTF
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../CPPRTF/build-CPPRTF-Desktop_Qt_5_7_0_MSVC2015_64bit-Debug/debug/ -lCPPRTF
else:unix: LIBS += -L$$PWD/../CPPRTF/build-CPPRTF-Desktop_Qt_5_7_0_MSVC2015_64bit-Debug/ -lCPPRTF

INCLUDEPATH += $$PWD/../CPPRTF/CPPRTF
DEPENDPATH += $$PWD/../CPPRTF/CPPRTF

似乎 -L$$PWD/../CPPRTF/CPPRTF/ 指向不同的位置。检查您是在哪里创建该目录的:比当前目录高一级(您的项目 .pro 文件所在的位置)还是在当前目录中?

添加到项目文件:

# simpler case
LIBS += -lMyLib

并且您可以指定路径:

# adding many paths/libs
LIBS += -LAbsolutePath \
        -L$$PWD/CurDirRelativePath \
        -lMyLib1 \
        -lMyLib2 \

DISTFILES变量似乎不需要添加*.lib文件。只有*.so for Linux/MacOS 和 *.dll for Windows 我们通常添加到 DISTFILES.

说明书Adding Libraries to projects.

您可以使用Qt Creator助手。右键单击您的项目并选择:A​​dd Library...

之后外部库然后在库文件旁边使用浏览器添加您的.dll,.so,.dylib,...

只需选择您的OS,然后点击下一步,助手会为您做好一切。