0

我有点困惑,我正在尝试制作一个没有外部依赖项的程序(例如,它可以很容易地移植到 UNIX),它具有套接字连接能力。但我不确定我应该使用什么?

Windows XP、7、8 上是否有可以链接的标准库,可以输出可以单独运行的单个 exe(不依赖于 DLL 来运行)?例如,在 UNIX 上,我可以链接到套接字并使用sys/socket.h95% 的 UNIX,而无需执行任何操作。

4

1 回答 1

0

相同的代码对两者都不起作用。但是您可以使用#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 使用套接字的方式广泛兼容。

于 2013-11-14T03:44:38.307 回答