Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > error LNK2019 при работе с Windows Sockets


Автор: rarelang 25.6.2004, 15:20
Помогите мне пожалуйста решить следующую проблему:

Я создал консольное приложение (Visual С++ - Win32 Console Project) и работаю с Windows Sockets (мне необходимо чтобы приложение компилировалось как под Borland/Visual так и под gcc, т.е. не использовало никаких функций специфических для конкретных сред разработки, поэтому я могу использовать только WinAPI и стандартные библиотеки C/C++,- таково требование к создаваемому коду, но тестируется все на Visual C++).

Я написал следующий код (это просто тест, так что я засунул его в main, а так он будет в конструкторе класса инициализирующем соединение с сервером, но это не важно; так вот я написал следующий код):

#include <windows.h>
#include <winsock.h>
#include <stdio.h>

void main(void)
{
int rc;
WSADATA WSAData;

rc = WSAStartup(MAKEWORD(1, 1), &WSAData);

if(rc != 0)
puts("Не работает");
else
puts("Все OK");
}

При компиляции в Visual C++ мне выдается следующая ошибка:

test error LNK2019: unresolved external symbol _WSAStartup@8 referenced in function _main

В свою очередь Borland C++ мне не выдает ошибок вообще.

Как я понимаю Windows Sockets использует WS2_32.DLL и MSWSOCK.DLL и если Borland их находит автоматически то Visual C++ нет. Подскажите мне пожалуйста как я могу заставить Visual C++ компилировать данный код, может там надо что-то изменить в настройках моего Win32 Console Project?

Заранее спасибо за любой ответ.

Автор: mr.DUDA 25.6.2004, 16:36
В настройках линкера (Project, Settings..., Link, Object/library modules) надо добавить либу Wsock32.lib или Ws2_32.lib (для второй версии WinSockets). Или в коде:
Цитата
#include <windows.h>
#include <winsock.h>
#include <stdio.h>

#define VISUAL_C

#ifdef VISUAL_C
#pragma comment ( lib, "wsock32.lib" )
#endif

void
main(void)
{
   
int rc;
   
WSADATA WSAData;

   
rc = WSAStartup(MAKEWORD(1, 1), &WSAData);

   
if(rc != 0)
       
puts("Не работает");
   
else
       
puts("Все OK");
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)