我有点困惑,我正在尝试创建一个没有外部依赖项的程序(例如,它可以很容易地移植到UNIX),它具有套接字连接功能。但我不确定我应该使用什么?
Windows XP上有一个标准库,7,8可以链接,可以输出一个可以单独运行的exe(不依赖于DLL来运行)吗?例如,在UNIX上,我可以链接socket并使用sys/socket.h
,并且有95%的UNIX没有做任何事情。
答案 0 :(得分:0)
相同的代码对两者都不起作用。但是,只有在Windows下进行编译时,才能使用#ifdef WIN32
使预处理器考虑Windows内容。
在标题中:
#ifdef WIN32
// Windows exclusive dependencies go here
#include <windows.h>
#include <winsock.h>
#pragma comment(lib, "ws2_32.lib")
#define close(s) closesocket(s)
#else
// Linux exclusive dependencies go here
#include <sys/socket.h>
#endif
在main()
内,你需要做这样的事情:
#ifdef WIN32
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
#endif
我相信这就是全部,API的其余部分与使用套接字的UNIX方式广泛兼容。