我的问题看起来似乎是真的重复,但是我检查了很多相关的问题,我的问题仍然存在。
我找到并编译了一个名为SMTPEmail的项目,因此我在.dll
和{{目录下有.lib
和Libraries/SMTPClient/debug
个文件1}}。
当我尝试在Libraries/SMTPClient/release
:emailadress.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
我唯一没做的就是将库中的头文件复制或链接到我的应用程序?
我有强烈的感觉,我错过了某个地方的小步骤,你能帮我指出我做错了吗?
答案 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到该路径的原因。