今天第一次在QT工程中用QFtp,QHttp等类写服务器程序,编译的时候发现有错误
错误如下:
1>download.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QNetworkAccessManager::QNetworkAccessManager(class QObject *)" (__imp_??0QNetworkAccessManager@@QAE@PAVQObject@@@Z),该符号在函数 "public: __thiscall download::download(class QWidget
*,class QFlags<enum Qt::WindowType>)" (??0download@@QAE@PAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z) 中被引用
1>download.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall QNetworkAccessManager::metaObject(void)const " (?metaObject@QNetworkAccessManager@@UBEPBUQMetaObject@@XZ)
1>download.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall QNetworkAccessManager::qt_metacast(char const *)" (?qt_metacast@QNetworkAccessManager@@UAEPAXPBD@Z)
1>download.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall QNetworkAccessManager::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QNetworkAccessManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>download.obj : error LNK2001: 无法解析的外部符号 "protected: virtual class QNetworkReply * __thiscall QNetworkAccessManager::createRequest(enum QNetworkAccessManager::Operation,class QNetworkRequest const &,class QIODevice *)" (?createRequest@QNetworkAccessManager@@MAEPAVQNetworkReply@@W4Operation@1@ABVQNetworkRequest@@PAVQIODevice@@@Z)
1>download.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QNetworkAccessManager::~QNetworkAccessManager(void)" (__imp_??1QNetworkAccessManager@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall QNetworkAccessManager::`scalar
deleting destructor'(unsigned int)" (??_GQNetworkAccessManager@@UAEPAXI@Z) 中被引用
1>download.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QNetworkRequest::~QNetworkRequest(void)" (__imp_??1QNetworkRequest@@QAE@XZ),该符号在函数 "public: void __thiscall download::startRequest(class QUrl)" (?startRequest@download@@QAEXVQUrl@@@Z)
中被引用
1>download.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class QNetworkReply * __thiscall QNetworkAccessManager::get(class QNetworkRequest const &)" (__imp_?get@QNetworkAccessManager@@QAEPAVQNetworkReply@@ABVQNetworkRequest@@@Z),该符号在函数 "public:
void __thiscall download::startRequest(class QUrl)" (?startRequest@download@@QAEXVQUrl@@@Z) 中被引用
1>download.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QNetworkRequest::QNetworkRequest(class QUrl const &)" (__imp_??0QNetworkRequest@@QAE@ABVQUrl@@@Z),该符号在函数 "public: void __thiscall download::startRequest(class QUrl)" (?startRequest@download@@QAEXVQUrl@@@Z)
中被引用
1>F:\my_project\qt\download\Debug\download.exe : fatal error LNK1120: 9 个无法解析的外部命令
一般出现这个问题都是库文件没有添加造成,这里使用QtNetwork就要加QtNetwork的库文件,在debug模式下需要加QtNetworkd4.lib库文件,
在release模式下需要加QtNetwork4.lib库文件
在哪里添加呢,一共有两个地方需要添加,缺一不可
1. 项目->属性->c/c++->常规->附加包含目录->在弹出的对话框中,点那个文件夹形状的按钮添加新行,输入$(QTDIR)\include\QtNetwork
2. 项目->属性->连接器->输入->附加依赖项,添加 QtNetworkd4.lib(debug模式)或者 QtNetwork4.lib(release模式)