[英]Using libraries in Qt
我的問題可能看起來像是一個真正的重復,但是我檢查了許多相關的問題,我的問題仍然存在。
我找到並編譯了一個名為SMTPEmail的項目,所以我的目錄是Libraries/SMTPClient/debug
和Libraries/SMTPClient/release
下的.dll
和.lib
文件。
當我嘗試在emailadress.h
情況下包含頭文件時: #include <emailaddress.h>
或#include <SMTPEmail/emailaddress.h>
,我收到錯誤無法打開包含文件'emailaddress.h'。 Q_DECL_EXPORT
修飾符用於頭文件中。
SMTPEmail.pro :
...
QT += core network
TARGET = SMTPEmail
TEMPLATE = lib
DEFINES += SMTP_BUILD
win32:CONFIG += dll
QMAKE_CXXFLAGS += -fPIC
...
MyProject.pro :
...
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
和
LIBS += -L./MyProject/Libraries/SMTPClient/release/ -lSMTPEmail
我唯一沒做的就是將庫中的頭文件復制或鏈接到我的應用程序?
我有強烈的感覺,我錯過了某個地方的一小步,你能幫我指出我做錯了什么嗎?
我認為你的問題是(至少)這一行:
INCLUDEPATH += ./Libraries/SMTPClient/debug
我幾乎可以肯定,這不是包含路徑的正確路徑,其中可以找到包含emailadress.h
的標題。
您已經解釋了所嘗試的LIBS值以及很長的lib路徑,但是您從編譯器獲得了包含錯誤,而不是鏈接器中的庫的鏈接問題。 我建議弄清楚標題的位置,並將其添加到包含路徑,如下所示:
# This is just pseudo code, but you need something like this
INCLUDEPATH += $$PWD/Includes/SMTPClient
回答你的問題:
我沒有做的唯一事情是復制應該在庫中的頭文件,是嗎?
這取決於你的意思。 如果你的意思是庫應該是自包含的,那么答案是否定的,除非你使用帶有手動符號解析等的動態庫加載,我不推薦用於簡單的情況。
如果您的意思是,它隨您嘗試重用的項目一起提供,那么肯定,這就是您需要在項目中指定includepath到該路徑的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.