Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ОшибкаLNK2019ссылка на неразрешенный внешний символ _WSAStartup@8 в функции _main  (Прочитано 13196 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Boriska
Помогающий

us
Offline Offline

« : 26-12-2021 17:45 » 

Привет. Подскажите, всегда со студией какой то затык.
Вот взял текст примера
Код: (C)
include <iostream>
#include "winsock.h"


const WORD WINSOCK_VERSION = 0x0101;

int main()
{
    std::cout << "Hello World!\n";

        WSADATA wsaData;

        if (WSAStartup(WINSOCK_VERSION, &wsaData))
        {
                std::cout << "winsock not bi initialized !\n";
                WSACleanup();
        }
        else std::cout << "Winsock initial OK !!!!\n";

        if (WSACleanup())
                std::cout << "Error Cleapir\n";
        else
                std::cout << "Cleapir Good !!!!!\n";
}

потом нашел, надо было подключить Ws2_32.lib. Может я че не понимаю, я хидер записал, студия должна все найти ? Вообще какая идеология здесь, я же не знаю имена *.lib....?
« Последнее редактирование: 26-12-2021 18:55 от Boriska » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-12-2021 20:26 » 

https://docs.microsoft.com/ru-ru/windows/win32/winsock/creating-a-basic-winsock-application
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 27-12-2021 05:12 » 

Вообще какая идеология здесь, я же не знаю имена *.lib....?
ищешь описание функции на сайте майкрософта, там внизу будет имя библиотеки
Записан

Boriska
Помогающий

us
Offline Offline

« Ответ #3 : 27-12-2021 08:23 » 

Привет.

Я когда решил, эту проблему, помог предыдущий опыт. Решил как советует Алексей++, и дока на которую он дал ссылку.  Решил можно сказать методом тыка (заработает не заработает), потому что из сообщения компилятора понять что ему нужна lib на мой взгляд не возможно.
Прочитав доку от RXL увидел что
Код: (C)
#pragma comment(lib, "Ws2_32.lib")
делает то же самое. Так вот вопрос какой из путей предпочтительнеем(правильный) - лезть в свойсва проекта и добавлять в дополнительные зависимости библиотеку или добавлять в коде
Код: (C)
#pragma comment(lib, "Ws2_32.lib")
?
И как понимать такие сообщения компилятора однозначно ?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 27-12-2021 08:43 » 

Цитата
#pragma comment(lib,
-это вижуалстудийнокомпиляторная фича, поэтому лучше привыкать прописывать либы в настройках проекта

Цитата
И как понимать такие сообщения компилятора однозначно
линкер пишет, какой символ он не нашёл. По тому, что он пишет, ищем в тексте программы этот идентификатор. Если это WinAPI-шная функция - то идём в MSND и смотрим, какую либу нужно подключить.
В остальных случаях просто анализируем, что могло понадобиться, читаем описание к подключаемому коду, вызываем телепатов и так далее Отлично
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 27-12-2021 14:13 » new

Но, прежде чем сесть за редактор, читаем документацию. Winsock первый — устаревшая библиотека, написанная еще до Win95. Следует использовать Winsock2.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 10-01-2022 10:48 » 

какой из путей предпочтительнеем(правильный) - лезть в свойсва проекта и добавлять в дополнительные зависимости библиотеку или добавлять в коде
Код: (C)
#pragma comment(lib, "Ws2_32.lib")
?

Зависит от целей применения кода. Если предусматривается портация срр-файл-а/-ов (как самостоятельных единиц) в другие проекты, то лучше использовать опцию в коде. В этом случае не надо будет заморачиваться с настройками в целевом проекте.

В остальных случаях следует использовать настройки провекта в студии. Особенно, если много файлов, которые используют lib-ы.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines