在Qt中使用库

时间:2014-12-04 11:49:28

标签: c++ qt qt4 qmake qtcore

我的问题看起来似乎是真的重复,但是我检查了很多相关的问题,我的问题仍然存在。

我找到并编译了一个名为SMTPEmail的项目,因此我在.dll和{{目录下有.libLibraries/SMTPClient/debug个文件1}}。

enter image description here

当我尝试在Libraries/SMTPClient/releaseemailadress.h#include <emailaddress.h>的情况下在示例中包含头文件时,我收到错误无法打开包含文件&#39; emailaddress.h&# 39 ;. #include <SMTPEmail/emailaddress.h>修饰符用于头文件。

SMTPEmail.pro

Q_DECL_EXPORT

MyProject.pro

...
QT       += core network

TARGET = SMTPEmail

TEMPLATE = lib

DEFINES += SMTP_BUILD

win32:CONFIG += dll

QMAKE_CXXFLAGS += -fPIC
...

我也尝试过:

...

INCLUDEPATH += ./Libraries/SMTPClient/debug

DEPENDPATH += ./Libraries/SMTPClient/debug

win32:LIBS += ./Libraries/SMTPClient/debug/SMTPEmail.lib
...

LIBS += -L./Libraries/SMTPClient/debug/ -lSMTPEmail

LIBS += -L$$_PRO_FILE_PWD_/Libraries/SMTPClient/debug/ -lSMTPEmail

LIBS += -L$$PWD_/Libraries/SMTPClient/debug/ -lSMTPEmail

我唯一没做的就是将库中的头文件复制或链接到我的应用程序?

我有强烈的感觉,我错过了某个地方的小步骤,你能帮我指出我做错了吗?

1 个答案:

答案 0 :(得分:3)

我认为你的问题是(至少)这一行:

INCLUDEPATH += ./Libraries/SMTPClient/debug

我几乎可以肯定,这不是包含emailadress.h标题的包含路径的正确途径。

您已经解释了所尝试的LIBS值以及很长的lib路径,但是您从编译器获得了包含错误,而不是链接器中的库的链接问题。我建议找出标题的位置,并将其添加到包含路径,如下所示:

# This is just pseudo code, but you need something like this
INCLUDEPATH += $$PWD/Includes/SMTPClient

回答你的问题:

  

我唯一没有做的就是复制应该在库中的头文件,是吗?

这取决于你的意思。如果你的意思是库是否应该是自包含的,那么答案是否定的,除非你使用带有手动符号解析等的动态库加载,我不推荐用于简单的情况。

如果您的意思是,它随您尝试重用的项目一起提供,那么肯定,这就是您需要在项目中指定includepath到该路径的原因。