Qt 添加 QtNetwork 庫文件


Qt應用程序默認沒有加QtNetwork庫。如下圖:

在開發過程中,因處理業務需要手動添加QtNetwork庫。根據常見情況分為以下兩種:

【1】若使用QTCreator開發程序

在工程的pro文件中添加:QT += network

【2】若使用VS + QT開發程序

本地環境VS2017 + QT5.9.2 編譯錯誤提示如下:

 1 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __cdecl QNetworkRequest::QNetworkRequest(class QUrl const &)" (__imp_??0QNetworkRequest@@QEAA@AEBVQUrl@@@Z),該符號在函數 "public: void __cdecl UPCLoginService::execute(void)" (?execute@UPCLoginService@@QEAAXXZ) 中被引用
 2 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __cdecl QNetworkRequest::~QNetworkRequest(void)" (__imp_??1QNetworkRequest@@QEAA@XZ),該符號在函數 "public: void __cdecl UPCLoginService::execute(void)" (?execute@UPCLoginService@@QEAAXXZ) 中被引用
 3 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __cdecl QNetworkRequest::setUrl(class QUrl const &)" (__imp_?setUrl@QNetworkRequest@@QEAAXAEBVQUrl@@@Z),該符號在函數 "public: void __cdecl UPCLoginService::execute(void)" (?execute@UPCLoginService@@QEAAXXZ) 中被引用
 4 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __cdecl QNetworkRequest::setHeader(enum QNetworkRequest::KnownHeaders,class QVariant const &)" (__imp_?setHeader@QNetworkRequest@@QEAAXW4KnownHeaders@1@AEBVQVariant@@@Z),該符號在函數 "public: void __cdecl UPCLoginService::execute(void)" (?execute@UPCLoginService@@QEAAXXZ) 中被引用
 5 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __cdecl QNetworkRequest::setSslConfiguration(class QSslConfiguration const &)" (__imp_?setSslConfiguration@QNetworkRequest@@QEAAXAEBVQSslConfiguration@@@Z),該符號在函數 "public: void __cdecl UPCLoginService::execute(void)" (?execute@UPCLoginService@@QEAAXXZ) 中被引用
 6 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __cdecl QSslConfiguration::QSslConfiguration(void)" (__imp_??0QSslConfiguration@@QEAA@XZ),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
 7 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __cdecl QSslConfiguration::~QSslConfiguration(void)" (__imp_??1QSslConfiguration@@QEAA@XZ),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
 8 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: class QSslConfiguration & __cdecl QSslConfiguration::operator=(class QSslConfiguration &&)" (__imp_??4QSslConfiguration@@QEAAAEAV0@$$QEAV0@@Z),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
 9 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __cdecl QSslConfiguration::setProtocol(enum QSsl::SslProtocol)" (__imp_?setProtocol@QSslConfiguration@@QEAAXW4SslProtocol@QSsl@@@Z),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
10 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __cdecl QSslConfiguration::setPeerVerifyMode(enum QSslSocket::PeerVerifyMode)" (__imp_?setPeerVerifyMode@QSslConfiguration@@QEAAXW4PeerVerifyMode@QSslSocket@@@Z),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
11 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: static class QSslConfiguration __cdecl QSslConfiguration::defaultConfiguration(void)" (__imp_?defaultConfiguration@QSslConfiguration@@SA?AV1@XZ),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
12 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __cdecl QNetworkAccessManager::QNetworkAccessManager(class QObject *)" (__imp_??0QNetworkAccessManager@@QEAA@PEAVQObject@@@Z),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
13 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: virtual __cdecl QNetworkAccessManager::~QNetworkAccessManager(void)" (__imp_??1QNetworkAccessManager@@UEAA@XZ),該符號在函數 "public: virtual __cdecl UPCLoginService::~UPCLoginService(void)" (??1UPCLoginService@@UEAA@XZ) 中被引用
14 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: class QNetworkReply * __cdecl QNetworkAccessManager::post(class QNetworkRequest const &,class QByteArray const &)" (__imp_?post@QNetworkAccessManager@@QEAAPEAVQNetworkReply@@AEBVQNetworkRequest@@AEBVQByteArray@@@Z),該符號在函數 "public: void __cdecl UPCLoginService::execute(void)" (?execute@UPCLoginService@@QEAAXXZ) 中被引用
15 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __cdecl QNetworkAccessManager::finished(class QNetworkReply *)" (__imp_?finished@QNetworkAccessManager@@QEAAXPEAVQNetworkReply@@@Z),該符號在函數 "public: __cdecl UPCLoginService::UPCLoginService(class QObject *)" (??0UPCLoginService@@QEAA@PEAVQObject@@@Z) 中被引用
16 error LNK2001: 無法解析的外部符號 "protected: virtual class QNetworkReply * __cdecl QNetworkAccessManager::createRequest(enum QNetworkAccessManager::Operation,class QNetworkRequest const &,class QIODevice *)" (?createRequest@QNetworkAccessManager@@MEAAPEAVQNetworkReply@@W4Operation@1@AEBVQNetworkRequest@@PEAVQIODevice@@@Z)
17 error LNK2001: 無法解析的外部符號 "__declspec(dllimport) public: static struct QMetaObject const QNetworkAccessManager::staticMetaObject" (__imp_?staticMetaObject@QNetworkAccessManager@@2UQMetaObject@@B)
18 error LNK2001: 無法解析的外部符號 "__declspec(dllimport) public: static struct QMetaObject const QNetworkAccessManager::staticMetaObject" (__imp_?staticMetaObject@QNetworkAccessManager@@2UQMetaObject@@B)
19 error LNK2001: 無法解析的外部符號 "__declspec(dllimport) public: static struct QMetaObject const QNetworkReply::staticMetaObject" (__imp_?staticMetaObject@QNetworkReply@@2UQMetaObject@@B)
20 error LNK2001: 無法解析的外部符號 "__declspec(dllimport) public: static struct QMetaObject const QNetworkReply::staticMetaObject" (__imp_?staticMetaObject@QNetworkReply@@2UQMetaObject@@B)
21 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: virtual void * __cdecl QNetworkAccessManager::qt_metacast(char const *)" (__imp_?qt_metacast@QNetworkAccessManager@@UEAAPEAXPEBD@Z),該符號在函數 "public: virtual void * __cdecl UPCLoginService::qt_metacast(char const *)" (?qt_metacast@UPCLoginService@@UEAAPEAXPEBD@Z) 中被引用
22 error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: virtual int __cdecl QNetworkAccessManager::qt_metacall(enum QMetaObject::Call,int,void * *)" (__imp_?qt_metacall@QNetworkAccessManager@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z),該符號在函數 "public: virtual int __cdecl UPCLoginService::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@UPCLoginService@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) 中被引用

一般出現此鏈接問題都是沒有添加庫文件造成的。

很明顯,程序中使用了QtNetwork庫,那么就需要手動添加QtNetwork庫文件:

(1)在debug模式,需要加Q5tNetworkd.lib庫文件

(2)在release模式,需要加Qt5Network.lib庫文件

當使用VS進行開發時在哪里添加呢?共有兩個地方需要添加(缺一不可):

(1)項目->屬性->c/c++->常規->附加包含目錄->在彈出的對話框中,點那個文件夾形狀的按鈕添加新行,輸入$(QTDIR)\include\QtNetwork

具體如圖所示:

(2)項目->屬性->連接器->輸入->附加依賴項,添加 Qt5Networkd.lib(debug模式)或者 Qt5Network.lib(release模式)

具體如圖所示:

 

添加完成后,再編譯。若仍然報錯,請仔細復盤如上步驟。

備注:其他模塊庫的添加類比如上步驟。

 

Good Good Study, Day Day Up.

順序 選擇  循環 總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM