vs2008中Qt网络模块的问题

1. 无法打开包括文件:“QUdpSocket”:No such file or directory

可能是因为Qt版本(本人用的是Qt4.7.3)的原因,网络模块的TCP、UDP头文件发生了变化。

解决方法:把原先的#include <QUdpSocket>包含加上QtNetwork/,即变成#include <QtNetwork/QUdpSocket>,QTcpSocket、QHostAddress的同理。

 (后记):其实此问题并不是路径问题,只要在Qt工程中把QtNetwork library加上去就可以了,而无需把原先的#include <QUdpSocket>包含加上QtNetwork/

2. QtNetwork库未添加引起的链接问题

链接时出现错误如下:

1>qudp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QHostAddress::~QHostAddress(void)" (__imp_??1QHostAddress@@QAE@XZ),该符号在函数 "protected: void __thiscall QUdp::myclick(void)" (?myclick@QUdp@@IAEXXZ) 中被引用
1>qudp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __int64 __thiscall QUdpSocket::writeDatagram(class QByteArray const &,class QHostAddress const &,unsigned short)" (__imp_?writeDatagram@QUdpSocket@@QAE_JABVQByteArray@@ABVQHostAddress@@G@Z),该符号在函数 "protected: void __thiscall QUdp::myclick(void)" (?myclick@QUdp@@IAEXXZ) 中被引用
1>qudp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QHostAddress::QHostAddress(class QString const &)" (__imp_??0QHostAddress@@QAE@ABVQString@@@Z),该符号在函数 "protected: void __thiscall QUdp::myclick(void)" (?myclick@QUdp@@IAEXXZ) 中被引用
1>qudp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUdpSocket::QUdpSocket(class QObject *)" (__imp_??0QUdpSocket@@QAE@PAVQObject@@@Z),该符号在函数 "protected: void __thiscall QUdp::myclick(void)" (?myclick@QUdp@@IAEXXZ) 中被引用
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall QUdpSocket::metaObject(void)const " (?metaObject@QUdpSocket@@UBEPBUQMetaObject@@XZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall QUdpSocket::qt_metacast(char const *)" (?qt_metacast@QUdpSocket@@UAEPAXPBD@Z)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall QUdpSocket::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QUdpSocket@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall QAbstractSocket::isSequential(void)const " (?isSequential@QAbstractSocket@@UBE_NXZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall QAbstractSocket::close(void)" (?close@QAbstractSocket@@UAEXXZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall QAbstractSocket::atEnd(void)const " (?atEnd@QAbstractSocket@@UBE_NXZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual __int64 __thiscall QAbstractSocket::bytesAvailable(void)const " (?bytesAvailable@QAbstractSocket@@UBE_JXZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual __int64 __thiscall QAbstractSocket::bytesToWrite(void)const " (?bytesToWrite@QAbstractSocket@@UBE_JXZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall QAbstractSocket::canReadLine(void)const " (?canReadLine@QAbstractSocket@@UBE_NXZ)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall QAbstractSocket::waitForReadyRead(int)" (?waitForReadyRead@QAbstractSocket@@UAE_NH@Z)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall QAbstractSocket::waitForBytesWritten(int)" (?waitForBytesWritten@QAbstractSocket@@UAE_NH@Z)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "protected: virtual __int64 __thiscall QAbstractSocket::readData(char *,__int64)" (?readData@QAbstractSocket@@MAE_JPAD_J@Z)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "protected: virtual __int64 __thiscall QAbstractSocket::readLineData(char *,__int64)" (?readLineData@QAbstractSocket@@MAE_JPAD_J@Z)
1>qudp.obj : error LNK2001: 无法解析的外部符号 "protected: virtual __int64 __thiscall QAbstractSocket::writeData(char const *,__int64)" (?writeData@QAbstractSocket@@MAE_JPBD_J@Z)
1>qudp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QUdpSocket::~QUdpSocket(void)" (__imp_??1QUdpSocket@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall QUdpSocket::`scalar deleting destructor'(unsigned int)" (??_GQUdpSocket@@UAEPAXI@Z) 中被引用
1>C:\Users\MZZ\Documents\qt4学习\qt4解析json\Win32\Release\QUdp.exe : fatal error LNK1120: 19 个无法解析的外部命令
1>生成日志保存在“file://C:\Users\MZZ\Documents\qt4学习\qt4解析json\Win32\Release\BuildLog.htm”
1>QUdp - 20 个错误,1 个警告
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

这是因为在Qt工程中未添加QtNetwork库的原因。在VS2008的Qt工程中默认只添加了Core library和GUI library两个库。

解决方法:项目属性—>右键—>Qt Project Settings—>Qt Modules界面中,勾选Network library,然后重新编译即可。

猜你喜欢

转载自blog.csdn.net/qq_30754685/article/details/80943520
今日推荐