如何在Mac OS X上编译包含Winsock库的C程序

时间:2014-10-24 15:20:30

标签: c linux macos sockets winsock

我正在用C开发一个可移植的客户端 - 服务器应用程序。我希望能够在Mac OS X以及Linux和Windows中编译它。此时我正在使用Mac OS X.我正在尝试通过预处理程序指令实现此结果,如下所示:

#include <stdio.h>
#include <stdlib.h>

#if defined WIN32
#include <winsock.h>
#else
#define closesocket close
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#endif

int main(void) {

#if defined WIN32

    WSADATA wsaData;
    WORD wVersionRequested;
    wVersionRequested = MAKEWORD(2, 2);
    int iResult = WSAStartup(wVersionRequested, &wsaData);
    if (iResult != 0){
        printf("Error at WSAStartup()\n");
        printf("A usable WinSock DLL cannot be found");
        return 0;
    }

#endif

    int Mysocket;

    //***MyCode***

    closesocket(Mysocket);

#if defined WIN32
    WSACleanup();
#endif

    return 0;

}

在Mac OS X中编译此代码时,编译器找不到“winsock.h”。当然,它指向的文件和库在Mac OS X中不存在。无论如何:当我使用Mac OS X和Linux时,我使用的预处理器指令不应该避免这个问题吗? 如果他们不这样做,有没有办法开发这样一个程序,一旦完成,它可以在我提到的所有平台上编译?

0 个答案:

没有答案