簡體   English   中英

在Qt中使用庫

[英]Using libraries in Qt

我的問題可能看起來像是一個真正的重復,但是我檢查了許多相關的問題,我的問題仍然存在。

我找到並編譯了一個名為SMTPEmail的項目,所以我的目錄是Libraries/SMTPClient/debugLibraries/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM