Почему я получаю ошибки компоновщика для ws2_32.dll в моей программе C?

Я пишу свою программу в Visual Studio 2010. Я не могу связать файл с именем ws2_32.dll с моим проектом.

Может ли кто-нибудь сказать мне, как я могу это сделать?


person Sanjay    schedule 07.03.2011    source источник
comment
Что вы пробовали? Что вы изменили в своем проекте? Какие реальные результаты были получены? Если были сообщения об ошибках, то какие?   -  person Damien_The_Unbeliever    schedule 07.03.2011


Ответы (3)


Обычно вы ссылаетесь не на ws2_32.dll напрямую, а на WS2_32.Lib, который можно найти в Windows SDK. Итак, в вашем коде вы пишете

#include <winsock2.h>

и к вашим настройкам компоновщика вы добавляете WS2_32.Lib, и все готово.

Windows SDK находится здесь:

http://msdn.microsoft.com/en-us/windows/bb980924.aspx

person Bernd Elkemann    schedule 07.03.2011
comment
Если вы правильно установили Visual Studio 2010, вам не нужно загружать SDK. - person Cody Gray; 07.03.2011
comment
Или, может быть, это зависит от версии; я не знаю, верно ли это для 2010 года, но в 2008 году экспресс не был включен. Спасибо за комментарий, надеюсь, он сначала заставит оригинальный постер выглядеть в папке lib по умолчанию VS2010. - person Bernd Elkemann; 07.03.2011
comment
Ах да, я не совсем уверен в экспресс-издании. Я никогда не использовал его. Полные версии 2008 и 2010 годов включают Windows SDK, никаких дополнительных загрузок не требуется. Включение ссылки по-прежнему полезно, но я бы оставил ее на крайний случай. - person Cody Gray; 07.03.2011
comment
@eznme - Почему? Ответ не лучший ответ. Вы даже не знали об ограничениях Visual Studio Express. Ответ Коди Грея намного лучше. - person Security Hound; 19.04.2013

Первым делом нужно импортировать заголовочный файл, определяющий функции, экспортируемые ws2_32.dll. Вы делаете это, добавляя следующий оператор в начало любого исходного файла, в котором вы хотите вызвать эти функции:

#include <winsock2.h>

Затем вы должны сообщить компоновщику, где он может найти библиотеку импорта для этой DLL. В Visual Studio это можно сделать двумя способами, но самый простой — добавить в исходный код следующую строку:

#pragma comment(lib, "ws2_32.lib")

Вы также можете добавить его в качестве зависимости к свойству «Дополнительные зависимости» вашего компоновщика (найдите это в разделе «Свойства проекта» -> «Свойства конфигурации» -> «Компоновщик» -> «Ввод»).

В MSDN также есть руководство по началу работы, которое проведет вас через создание базового приложения Winsock. Убедитесь, что вы прочитали его, прежде чем двигаться дальше.

person Cody Gray    schedule 07.03.2011

Вам необходимо загрузить файл, используя LoadLibrary если у вас нет файла lib.

person AndersK    schedule 07.03.2011