WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 05:29
Оценка:
Имеется такой код:
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'
Как эту ошибку побороть?
And solder won't keep me together (c)
Re: WSAStartup и GCC 3.4.2
От: Alexander Россия  
Дата: 04.07.05 05:44
Оценка:
Здравствуйте, KHeLeKRoN, Вы писали:

KHL>Имеется такой код:

KHL>
void init ()
KHL>{
KHL>        WSADATA wsaData;
KHL>        int err = WSAStartup (MAKEWORD (1, 0), &wsaData);
KHL>        if (!err)
KHL>        {
KHL>                cout << "Error during WinSock loading.";
KHL>                return;
KHL>        }
KHL>}


KHL>Когда пытаюсь откомпилить при помощи GCC 3.4.2, который в составе мингва, получаю такую ошибку линкера:

KHL>{Длинное название файла, в котором ошибка}: undefined reference to 'WSAStartup@8'
KHL>Как эту ошибку побороть?

WSAStartup — это функция их win api, определенная в Winsock2.h. Вам нужна либа Ws2_32.lib. Либо надо слинковаться с данной либой, либо не пользоваться windows сокетами.
Re[2]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 05:46
Оценка:
Здравствуйте, Alexander, Вы писали:

A>Здравствуйте, KHeLeKRoN, Вы писали:


KHL>>Имеется такой код:

KHL>>
void init ()
KHL>>{
KHL>>        WSADATA wsaData;
KHL>>        int err = WSAStartup (MAKEWORD (1, 0), &wsaData);
KHL>>        if (!err)
KHL>>        {
KHL>>                cout << "Error during WinSock loading.";
KHL>>                return;
KHL>>        }
KHL>>}


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>>>
void init ()
KHL>>>{
KHL>>>        WSADATA wsaData;
KHL>>>        int err = WSAStartup (MAKEWORD (1, 0), &wsaData);
KHL>>>        if (!err)
KHL>>>        {
KHL>>>                cout << "Error during WinSock loading.";
KHL>>>                return;
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...


-lws2_32
Re[4]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 11:03
Оценка:
Здравствуйте, Аноним, Вы писали:

{}
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-программирования?
Re[6]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 13:04
Оценка:
Здравствуйте, Аноним, Вы писали:

{}
А>что значит "положил" ?
А>разве ее там не было — когда я в последний раз трогал mingw, у того в комплекте в ...\lib\ валялся набор библиотек (*.a) для нормального Windows-программирования?

А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии
У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.
And solder won't keep me together (c)
Re[7]: WSAStartup и GCC 3.4.2
От: Alexey Chen Чили  
Дата: 04.07.05 14:29
Оценка:
Здравствуйте, KHeLeKRoN, Вы писали:

KHL>А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии

KHL>У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.

Хм, а линкуешь ты сам через ld или через g++? И у тебя этот код случайно не в либе лежит, а то у ld прядок перечисления библиотек имеет значение.
Re[8]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 15:02
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>Здравствуйте, KHeLeKRoN, Вы писали:


KHL>>А... Звиняй... Ступил... Я туда либу кинул из каталога \lib вижуал студии

KHL>>У меня там лежит файл libws2_32.a, но все равно — ничего не грузится. То есть, я пишу в строке вызова -lws2_32, а все происходит так, как будто я этого и не писал — та же самая ошибка линкера и ничего нового.

AC>Хм, а линкуешь ты сам через ld или через g++? И у тебя этот код случайно не в либе лежит, а то у ld прядок перечисления библиотек имеет значение.


Линкую я через g++... Код лежит прямо в файле common.cpp, который я и передаю g++...
And solder won't keep me together (c)
Re[9]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 15:16
Оценка:
Здравствуйте, 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'
And solder won't keep me together (c)
Re[10]: WSAStartup и GCC 3.4.2
От: Alexey Chen Чили  
Дата: 04.07.05 15:21
Оценка:
Здравствуйте, 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;
}


g++ test.cpp -lws2_32

Попробуй так. Что получится?
Re[11]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 15:32
Оценка:
Здравствуйте, 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>#include <Winsock2.h>

AC>#include <iostream>
AC>using namespace std;

AC>int main ()
AC>{
AC>        WSADATA wsaData;
AC>        int err = WSAStartup (MAKEWORD (1, 0), &wsaData);
AC>        if (!err)
AC>        {
AC>                cout << "Error during WinSock loading.";
AC>        }
AC>        return 0;
AC>}
AC>


AC>g++ test.cpp -lws2_32


AC>Попробуй так. Что получится?

Компилится И мой старый код даже после этого компилится!!! Знаешь, я по ходу ошибку нашел! Я ставил -l ws2_32 до имени входного файла и до имени выходного файла
Error during WinSock loading.
And solder won't keep me together (c)
Re[12]: WSAStartup и GCC 3.4.2
От: Alexey Chen Чили  
Дата: 04.07.05 15:50
Оценка:
Здравствуйте, KHeLeKRoN, Вы писали:

AC>>Попробуй так. Что получится?

KHL>Компилится И мой старый код даже после этого компилится!!! Знаешь, я по ходу ошибку нашел! Я ставил -l ws2_32 до имени входного файла и до имени выходного файла

У гнутого линкера порядок элементов линковки имеет очень большое значение Иногда получаются перлы в виде -llib1 -llib2 -llib1 -llib2, это как бы неправильно с точки зрения дизигна, но люди ведь несовершенны и всех не исправить
Re[13]: WSAStartup и GCC 3.4.2
От: KHeLeKRoN Россия  
Дата: 04.07.05 15:52
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>Здравствуйте, KHeLeKRoN, Вы писали:


AC>>>Попробуй так. Что получится?

KHL>>Компилится И мой старый код даже после этого компилится!!! Знаешь, я по ходу ошибку нашел! Я ставил -l ws2_32 до имени входного файла и до имени выходного файла

AC>У гнутого линкера порядок элементов линковки имеет очень большое значение Иногда получаются перлы в виде -llib1 -llib2 -llib1 -llib2, это как бы неправильно с точки зрения дизигна, но люди ведь несовершенны и всех не исправить

Понятно. Спасибо большое! BTW, ты не знаешь, где можно почитать доки по чистым BSD Sockets?
And solder won't keep me together (c)
Re[14]: WSAStartup и GCC 3.4.2
От: Alexey Chen Чили  
Дата: 04.07.05 18:13
Оценка:
Здравствуйте, KHeLeKRoN, Вы писали:

KHL>Понятно. Спасибо большое! BTW, ты не знаешь, где можно почитать доки по чистым BSD Sockets?

Что-то мне подсказывает, что здесь http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/sockets.html
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.