collect2.exe: error: ld returned 1 exit status - Winsock2 в Си

Рейтинг: 0Ответов: 0Опубликовано: 09.01.2023

У меня ОС Windows, Стоит MinGW, и я не использую IDE(эти ваши Codeblocks, VS) Решил я как то написать скрипт для отправки запросов через сокеты в Си

Запустил, и вижу вот это:
...\AppData\Local\Temp\cceDFw7s.o:thpool.c:(.text+0x40): undefined reference to "inet_addr@4" ...\AppData\Local\Temp\cceDFw7s.o:thpool.c:(.text+0x65): undefined reference to "socket@12" ...\AppData\Local\Temp\cceDFw7s.o:thpool.c:(.text+0xa6): undefined reference to "connect@12" ...\AppData\Local\Temp\cceDFw7s.o:thpool.c:(.text+0xf3): undefined reference to "send@16" collect2.exe: error: ld returned 1 exit status

Вроде синтаксических ошибок нет, и правильно все использовал. Мне походу надо устанавливать какие-нибудь дополнения? Можете помочь пожалуйста

Вообще с начало я не знал, что для Windows нужно использовать winsock2(не sys/socket как для линукса) Даже когда я до этого пробовал с библиотекой sys/socket выводило такую же ошибку

Вот код:

#include <stdio.h>
#include <string.h>
#include <Winsock2.h>
#include <process.h>

#define PORT 80

int main() {
    WSADATA WSAStartData;
    SOCKET s_socket;

    struct sockaddr_in serv_addr;

    int client_operator;
    char* client_request = "TEST[NO]";
    char* serv_answ[1024];

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = PORT;
    serv_addr.sin_addr.s_addr = inet_addr("IP");

    s_socket = socket(AF_INET, SOCK_DGRAM, 0);
    if (s_socket == INVALID_SOCKET) {
        printf("Unable to create socket");
        exit(1);
    }

    client_operator = connect(s_socket, (SOCKADDR*) &serv_addr, sizeof(serv_addr));
    if (client_operator == SOCKET_ERROR) {
        printf("Unable to connect");
        exit(1);
    }

    client_operator = send(s_socket, client_request, strlen(client_request), 0);
    printf("SUCCESSFULL");
    
    return 0;
}

Ответы

Ответов пока нет.