0

У меня ОС 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 = &quot;TEST[NO]&quot;;
char* serv_answ[1024];

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

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

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

client_operator = send(s_socket, client_request, strlen(client_request), 0);
printf(&quot;SUCCESSFULL&quot;);

return 0;

}

  • Да, я пробовал #pragma comment(lib, "libname.lib"). Указал имя библиотеки. Такая же ошибка – Antonio Pripizducci Jan 09 '23 at 11:34
  • Не очень знаком со сборкой в windows, но предполагаю, если используется mingw, то необходимо указать в параметрах линкера путь и имя библиотеки. Вероятно, pragma-директива - это расширение студии. – user207200 Jan 09 '23 at 11:49
  • Ну я тоже предполагаю так. Иначе бы у меня не возникал такой вопрос – Antonio Pripizducci Jan 09 '23 at 11:57
  • Не совсем понял вас, вы уже пробовали указать компилятору библиотеку? Если да, то в вопрос стоит добавить команду компиляции со всеми параметрами. – user207200 Jan 09 '23 at 12:12
  • указать надо использование Ws2_32.lib видимо, да ещё WSAStartup надо вызвать https://learn.microsoft.com/ru-ru/windows/win32/winsock/initializing-winsock?source=recommendations – Виктор Jan 09 '23 at 12:46

0 Answers0