void init ()
{
WSADATA wsaData;
int err = WSAStartup (MAKEWORD (1, 0), &wsaData);
if (!err)
{
cout << "Error during WinSock loading.";
return;
}
}
Когда пытаюсь откомпилить при помощи GCC 3.4.2, который в составе мингва, получаю такую ошибку линкера:
{Длинное название файла, в котором ошибка}: undefined reference to 'WSAStartup@8'
Как эту ошибку побороть?
KHL>Когда пытаюсь откомпилить при помощи GCC 3.4.2, который в составе мингва, получаю такую ошибку линкера: KHL>{Длинное название файла, в котором ошибка}: undefined reference to 'WSAStartup@8' KHL>Как эту ошибку побороть?
WSAStartup — это функция их win api, определенная в Winsock2.h. Вам нужна либа Ws2_32.lib. Либо надо слинковаться с данной либой, либо не пользоваться windows сокетами.
KHL>>Когда пытаюсь откомпилить при помощи GCC 3.4.2, который в составе мингва, получаю такую ошибку линкера: KHL>>{Длинное название файла, в котором ошибка}: undefined reference to 'WSAStartup@8' KHL>>Как эту ошибку побороть?
A>WSAStartup — это функция их win api, определенная в Winsock2.h. Вам нужна либа Ws2_32.lib. Либо надо слинковаться с данной либой, либо не пользоваться windows сокетами.
А где можно почитать про не-Windows сокеты? Либо, как слинковаться с этой либой (компилер — GCC). Я просто очень недавно работаю с GCC...
And solder won't keep me together (c)
Re[3]: WSAStartup и GCC 3.4.2
От:
Аноним
Дата:
04.07.05 10:20
Оценка:
Здравствуйте, KHeLeKRoN, Вы писали:
KHL>Здравствуйте, Alexander, Вы писали:
A>>Здравствуйте, KHeLeKRoN, Вы писали:
KHL>>>Имеется такой код: KHL>>>
KHL>>>Когда пытаюсь откомпилить при помощи GCC 3.4.2, который в составе мингва, получаю такую ошибку линкера: KHL>>>{Длинное название файла, в котором ошибка}: undefined reference to 'WSAStartup@8' KHL>>>Как эту ошибку побороть?
A>>WSAStartup — это функция их win api, определенная в Winsock2.h. Вам нужна либа Ws2_32.lib. Либо надо слинковаться с данной либой, либо не пользоваться windows сокетами.
KHL>А где можно почитать про не-Windows сокеты? Либо, как слинковаться с этой либой (компилер — GCC). Я просто очень недавно работаю с GCC...
{} KHL>>А где можно почитать про не-Windows сокеты? Либо, как слинковаться с этой либой (компилер — GCC). Я просто очень недавно работаю с GCC...
А>-lws2_32
А все равно не работает . Библиотеку положил в каталог lib.
And solder won't keep me together (c)
Re[5]: WSAStartup и GCC 3.4.2
От:
Аноним
Дата:
04.07.05 12:12
Оценка:
Здравствуйте, KHeLeKRoN, Вы писали:
KHL>Здравствуйте, Аноним, Вы писали:
KHL>{} KHL>>>А где можно почитать про не-Windows сокеты? Либо, как слинковаться с этой либой (компилер — GCC). Я просто очень недавно работаю с GCC...
А>>-lws2_32
KHL>А все равно не работает . Библиотеку положил в каталог lib.
что значит "положил" ?
разве ее там не было — когда я в последний раз трогал mingw, у того в комплекте в ...\lib\ валялся набор библиотек (*.a) для нормального Windows-программирования?
{} А>что значит "положил" ? А>разве ее там не было — когда я в последний раз трогал mingw, у того в комплекте в ...\lib\ валялся набор библиотек (*.a) для нормального Windows-программирования?
А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии
У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.
Здравствуйте, KHeLeKRoN, Вы писали:
KHL>А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии KHL>У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.
Хм, а линкуешь ты сам через ld или через g++? И у тебя этот код случайно не в либе лежит, а то у ld прядок перечисления библиотек имеет значение.
Здравствуйте, Alexey Chen, Вы писали:
AC>Здравствуйте, KHeLeKRoN, Вы писали:
KHL>>А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии KHL>>У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.
AC>Хм, а линкуешь ты сам через ld или через g++? И у тебя этот код случайно не в либе лежит, а то у ld прядок перечисления библиотек имеет значение.
Линкую я через g++... Код лежит прямо в файле common.cpp, который я и передаю g++...
Здравствуйте, KHeLeKRoN, Вы писали:
KHL>Здравствуйте, Alexey Chen, Вы писали:
AC>>Здравствуйте, KHeLeKRoN, Вы писали:
KHL>>>А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии KHL>>>У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.
AC>>Хм, а линкуешь ты сам через ld или через g++? И у тебя этот код случайно не в либе лежит, а то у ld прядок перечисления библиотек имеет значение.
KHL>Линкую я через g++... Код лежит прямо в файле common.cpp, который я и передаю g++...
Теперь линкую отдельно. Либа находится и все подключается. Но! Теперь возникает вообще дофига ошибок! Одна из них:
F:\Programming\Distributed\Common.obj(.rdata$_ZTISt9exception[__ZTISt9exception]+0x0):Common.cpp: undefined reference to `vtable for __cxxabiv1::__class_type_info'
Здравствуйте, KHeLeKRoN, Вы писали:
KHL>>Линкую я через g++... Код лежит прямо в файле common.cpp, который я и передаю g++...
KHL>Теперь линкую отдельно. Либа находится и все подключается. Но! Теперь возникает вообще дофига ошибок! Одна из них: KHL>F:\Programming\Distributed\Common.obj(.rdata$_ZTISt9exception[__ZTISt9exception]+0x0):Common.cpp: undefined reference to `vtable for __cxxabiv1::__class_type_info'
Хм.
#include <Winsock2.h>
#include <iostream>
using namespace std;
int main ()
{
WSADATA wsaData;
int err = WSAStartup (MAKEWORD (1, 0), &wsaData);
if (!err)
{
cout << "Error during WinSock loading.";
}
return 0;
}
Здравствуйте, Alexey Chen, Вы писали:
AC>Здравствуйте, KHeLeKRoN, Вы писали:
KHL>>>Линкую я через g++... Код лежит прямо в файле common.cpp, который я и передаю g++...
KHL>>Теперь линкую отдельно. Либа находится и все подключается. Но! Теперь возникает вообще дофига ошибок! Одна из них: KHL>>F:\Programming\Distributed\Common.obj(.rdata$_ZTISt9exception[__ZTISt9exception]+0x0):Common.cpp: undefined reference to `vtable for __cxxabiv1::__class_type_info'
AC>Хм. AC>
AC>g++ test.cpp -lws2_32
AC>Попробуй так. Что получится?
Компилится И мой старый код даже после этого компилится!!! Знаешь, я по ходу ошибку нашел! Я ставил -l ws2_32 до имени входного файла и до имени выходного файла
Error during WinSock loading.
Здравствуйте, KHeLeKRoN, Вы писали:
AC>>Попробуй так. Что получится? KHL>Компилится И мой старый код даже после этого компилится!!! Знаешь, я по ходу ошибку нашел! Я ставил -l ws2_32 до имени входного файла и до имени выходного файла
У гнутого линкера порядок элементов линковки имеет очень большое значение Иногда получаются перлы в виде -llib1 -llib2 -llib1 -llib2, это как бы неправильно с точки зрения дизигна, но люди ведь несовершенны и всех не исправить
Здравствуйте, Alexey Chen, Вы писали:
AC>Здравствуйте, KHeLeKRoN, Вы писали:
AC>>>Попробуй так. Что получится? KHL>>Компилится И мой старый код даже после этого компилится!!! Знаешь, я по ходу ошибку нашел! Я ставил -l ws2_32 до имени входного файла и до имени выходного файла
AC>У гнутого линкера порядок элементов линковки имеет очень большое значение Иногда получаются перлы в виде -llib1 -llib2 -llib1 -llib2, это как бы неправильно с точки зрения дизигна, но люди ведь несовершенны и всех не исправить
Понятно. Спасибо большое! BTW, ты не знаешь, где можно почитать доки по чистым BSD Sockets?