在另一个 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
.
您可以使用Qt Creator助手。右键单击您的项目并选择:Add Library...。
之后外部库然后在库文件旁边使用浏览器添加您的.dll,.so,.dylib,...
只需选择您的OS,然后点击下一步,助手会为您做好一切。
我正在尝试包含我在 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
.
您可以使用Qt Creator助手。右键单击您的项目并选择:Add Library...。
之后外部库然后在库文件旁边使用浏览器添加您的.dll,.so,.dylib,...
只需选择您的OS,然后点击下一步,助手会为您做好一切。