杂化轨道VSEPR 2021-08-13 20:43 采纳率: 93.3%
浏览 179
已结题

【socket 编程】在Windows下调试socket程序出现“undefined reference X”错误

服务端代码如下:

#include <stdio.h>  
#include <winsock2.h>  
  
#pragma comment(lib,"ws2_32.lib")  
  
int main(int argc, char* argv[])  
{  
    //初始化WSA  
    WORD sockVersion = MAKEWORD(2,2);  
    WSADATA wsaData;  
    if(WSAStartup(sockVersion, &wsaData)!=0)  
    {  
        return 0;  
    }  
  
    //创建套接字  
    SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  
    if(slisten == INVALID_SOCKET)  
    {  
        printf("socket error !");  
        return 0;  
    }  
  
    //绑定IP和端口  
    sockaddr_in sin;  
    sin.sin_family = AF_INET;  
    sin.sin_port = htons(8888);  
    sin.sin_addr.S_un.S_addr = INADDR_ANY;   
    if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)  
    {  
        printf("bind error !");  
    }  
  
    //开始监听  
    if(listen(slisten, 5) == SOCKET_ERROR)  
    {  
        printf("listen error !");  
        return 0;  
    }  
  
    //循环接收数据  
    SOCKET sClient;  
    sockaddr_in remoteAddr;  
    int nAddrlen = sizeof(remoteAddr);  
    char revData[255];   
    while (true)  
    {  
        printf("等待连接...\n");  
        sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);  
        if(sClient == INVALID_SOCKET)  
        {  
            printf("accept error !");  
            continue;  
        }  
        printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));  
          
        //接收数据  
        int ret = recv(sClient, revData, 255, 0);         
        if(ret > 0)  
        {  
            revData[ret] = 0x00;  
            printf(revData);  
        }  
  
        //发送数据  
        const char * sendData = "你好,TCP客户端!\n";  
        send(sClient, sendData, strlen(sendData), 0);  
        closesocket(sClient);  
    }  
      
    closesocket(slisten);  
    WSACleanup();  
    return 0;  
} 

出现的错误如下:

PS X:\data-struct\data-structure> cd "x:\data-struct\data-structure\" ; if ($?) { g++ server.cpp -o server } ; if ($?) { .\C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x3e): undefined reference to `__imp_WSAStartup'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x6a): undefined reference to `__imp_socket'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0xa8): undefined reference to `__imp_htons'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0xd9): undefined reference to `__imp_bind'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x107): undefined reference to `__imp_listen'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x161): undefined reference to `__imp_accept'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x194): undefined reference to `__imp_inet_ntoa'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x1c6): undefined reference to `__imp_recv'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x230): undefined reference to `__imp_send'
C:\Users\fligh\AppData\Local\Temp\ccJc48Xw.o:server.cpp:(.text+0x243): undefined reference to `__imp_closesocket'
collect2.exe: error: ld returned 1 exit status


  • 写回答

2条回答 默认 最新

  • 源代码大师 博客专家认证 2021-08-14 07:14
    关注

    是否缺少头文件?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月11日
  • 已采纳回答 2月3日
  • 创建了问题 8月13日

悬赏问题

  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置
  • ¥15 如何解决y_true和y_predict数据类型不匹配的问题(相关搜索:机器学习)
  • ¥15 PB中矩阵文本型数据的总计问题。