【问题标题】:starting out in winsock cant get the first bit to compile从winsock开始无法编译第一个位
【发布时间】:2010-11-20 09:26:14
【问题描述】:

很抱歉必须为此创建一个新线程,但我从 winsock 开始,并一直遵循 madwizardbeej 指南,以及有关 msdn 的一些信息。我被卡住了,我似乎无法编译以下内容(是的......大开始......我知道......:P)

#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <iostream>

using namespace std;

int main(void){
    const int iReqWinsockVer = 2; // 
    WSADATA wsadata;

    if (WSAStartup(MAKEWORD(iReqWinsockVer,0), &wsadata) == 0 ){
        if (LOBYTE(wsadata.wVersion) >= iReqWinsockVer){


        }
        else{
            cout<<" Required version Not available..." << endl;
        }
        if (WSACleanup()!=0){
            cout<<"Clean up failed!..." << endl;
        }
    }
    else{
        cout<<"Startup faled!..." << endl;
    }

    return 0;

}

我收到以下错误

C:\DOCUME~1\rs\LOCALS~1\Temp/ccygafwl.o:sock.cpp:(.text+0x14a): undefined reference to `WSAStartup@8'
C:\DOCUME~1\rs\LOCALS~1\Temp/ccygafwl.o:sock.cpp:(.text+0x186): undefined reference to `WSACleanup@0'
collect2: ld returned 1 exit status

我正在使用 GCC 并通过命令行进行编译,有什么我必须链接的吗?。

-谢谢。

【问题讨论】:

  • 我认为-lws2 有效。不过是在拉长我的记忆。
  • 你的意思是你通过 Cygwin 使用 Mingw 或 GCC?为什么不直接使用免费的 Visual Studio Express Edition for Windows 特定代码?
  • Mingw,我目前正在尝试避免使用 Visual Studio,我真的不知道如何使用它,而且我不认为像这样简单的东西真的需要这样的 IDE :)。还在学习中。

标签: c++ gcc compiler-errors winsock


【解决方案1】:

您必须使用 -lws2_32 将您的项目与 winsock 库链接(如果我没记错的话)。

【讨论】:

    【解决方案2】:

    gcc -o socket.exe socket.c -lws2_32

    【讨论】:

      【解决方案3】:

      您好,我认为您没有与 win socket lib 链接(视觉工作室中的 Ws2_32.lib)

      【讨论】:

      • 你好,我没有使用 Visual Studio,只使用 GCC 和 notepad++。如何手动执行此操作?
      • 我觉得你需要这个-lws2_32
      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2021-01-30
      相关资源
      最近更新 更多