C - 对 WSAStartup@8 的 undefined reference

标签 c mingw codeblocks winsock wsastartup

我正在使用 Code::Blocks、MinGW 和 Windows。我正在尝试初始化 winsock,以便我可以处理一个项目。我不断收到错误 Undefined Reference to WSAStartup@8有人知道如何解决这个问题吗?

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

#pragma comment(lib,"ws2_32.lib")

int main(int argc , char *argv[]){
    WSADATA wsa;
    int output;

    output=WSAStartup(MAKEWORD(2,2),&wsa);
    if(output != 0) {
        printf("Startup failed %d\n", output);
        return 1;
    } else {
        printf("Initialized");
        return 0;
    }

}

最佳答案

链接器在加载代码后查找依赖项。如果库在需要符号之前出现在构建过程中,因为源文件在之后出现,那么没有使用符号,后来当它们出现在源文件中时,它们将无法解析。将链接的 winsock 库 -lws2_32 放在源文件和目标文件之后。

gcc prog.c -o prog -lws2_32

关于C - 对 WSAStartup@8 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384803/

相关文章:

c - 最小化客户端处理 - C 套接字编程

c - 什么是结构中的灵活数组成员?

visual-c++ - 从 stdcall dll 函数返回结构是否安全?

opengl - 访问任何与 GLEW 相关的内容都会立即导致 MinGW 中的程序崩溃

c++ - CPU 架构的 8 位 FFT?

c - 文件大小超过缓冲区大小

c++ - fatal error : iostream: No such file or directory #include <iostream>

c++ - 计算从现在到到期的分钟数

c - 使用代码块无法读取字符

c++ - 使用代码块在 Windows 上安装 boost