我有点困惑,我正在尝试制作一个没有外部依赖项的程序(例如,它可以很容易地移植到 UNIX),它具有套接字连接能力。但我不确定我应该使用什么?
Windows XP、7、8 上是否有可以链接的标准库,可以输出可以单独运行的单个 exe(不依赖于 DLL 来运行)?例如,在 UNIX 上,我可以链接到套接字并使用sys/socket.h
95% 的 UNIX,而无需执行任何操作。
相同的代码对两者都不起作用。但是您可以使用#ifdef WIN32
使预处理器仅在 Windows 下编译时才考虑 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 使用套接字的方式广泛兼容。