当前位置: 代码迷 >> QT开发 >> Qt Creator怎么添加库文件
  详细解决方案

Qt Creator怎么添加库文件

热度:12   发布时间:2016-04-25 04:37:56.0
Qt Creator怎样添加库文件
我现在在用Creator做个网络方面的测试程序,里面用到UDPSocket,在解析数据时需要用到ntohl这些函数,自然要包括winsock2.h、ws2tcpip.h这些头文件,但编译时出现undefined reference to ntohl@4的问题,这个一看一般是没有连接到库的问题,我就在程序中添加了#pragma comment(lib,"Ws2_32.lib")但又出现ignoring pragma comment的问题,我想问一下Qt在哪里可以像VS一样的直接添加lib文件呢?为什么出现ignoring pragma comment呢?期待高人

------解决方案--------------------
编辑.pro文件,加上LIBS += Ws2_32.lib试试。

话说QT有自己的socket函数,为什么不用呢?
------解决方案--------------------
你编译器用的什么?mingw还是msvc?
如果是msvc
#pragma comment(lib,"Ws2_32.lib")
是没有错的。
如果是mingw就要
在pro文件中加入:
LIBS+= Ws2_32.lib
------解决方案--------------------
QtEndian可以转换
T qFromBigEndian ( const uchar * src )
T qFromBigEndian ( T src )
T qFromLittleEndian ( const uchar * src )
T qFromLittleEndian ( T src )
void qToBigEndian ( T src, uchar * dest )
T qToBigEndian ( T src )
void qToLittleEndian ( T src, uchar * dest )
T qToLittleEndian ( T src )

探讨

引用:
编辑.pro文件,加上LIBS += Ws2_32.lib试试。

话说QT有自己的socket函数,为什么不用呢?

我就在用Qt自己的socket,感觉比较方便,但是我需要ntohl这类的函数,Qt中有自己的这类函数吗?

------解决方案--------------------
mingw32中没有#pragma comment(lib,"Ws2_32.lib")这样的预处理命令。
------解决方案--------------------
自己判断一下是高字节在前还是低字节在前。
探讨

引用:
mingw32中没有#pragma comment(lib,"Ws2_32.lib")这样的预处理命令。

mingw和msvc是怎样确定的呢?这个不懂!这两个可以相互调换吗?我直接从套接字中得到的数据我应该FromBigEndian还是Little呢?

------解决方案--------------------
在理想的世界里,网络字节顺序一定是big endian的,不过现在流行的桌面系统基本上都是little endian,如果按照标准则每次收发数据都要做相应的转换,比较麻烦,所以很多情况下都直接上little以提高效率。这个没办法自己判断,双方必须事先约定,默认的约定是big endian。实在不知道就猜,多试几个数很容易猜出来
  相关解决方案