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

Including a QT library in another QT project

本文关键字:QT 包含一 项目 另一个      更新时间:2023-10-16

我正在尝试包括我在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文件。只*。所以对于Linux/MacOS和Windows的*.dll,我们通常添加到DISTFILES .

手册《向项目添加库》

您可以使用Qt Creator助手。右键单击您的项目并选择:Add Library…

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

只要选择你的操作系统,点击下一步,助手会为你做的。