前言
在windows下进行socket编程时,因为引入的不是标准的C语言库,所以需要设置gcc编译链接的dll动态链接库路径。下面展示devC++中进行编程时需要设置的环境问题。
问题
需要引入的库和初始化代码
在win下进行socket编程,需要引用的头文件有
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib, "Ws2_32.lib") //此处是引入ws2_32.lib的链接库
winsock中存在多个版本,需要准备相应的WORD类型,下面是相关宏定义和源码类型
#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
int WSAStartup(WORD wVersionRequested, LPWSADATA ipWSADATA);
一般会如下面示例一样初始化
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
gcc编译的额外命令
如果没有对gcc编译命令进行修改,就会产生如下的问题,无法使用外部的符号表。
为解决上面的问题,需要在编译选项中加上 -lWs2_32
的命令