cpprestsdk web_socket линковка

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by loggik, 23 Apr 2020.

  1. loggik

    loggik New Member

    Joined:
    23 Apr 2020
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Приветствую.

    В проекте нужен web_socket класс из библиотки https://github.com/microsoft/cpprestsdk

    Установка cpprestsdk и boost-asio
    vcpkg install cpprestsdk:x86-windows
    vcpkg install boost-asio:x86-windows
    vcpkg integrate install

    проект на VS 2015, Win7 x64

    тестовый код

    #include <cpprest/ws_client.h>
    using namespace web;
    using namespace web::websockets::client;

    websocket_client client;
    client.connect(U("ws://localhost:1234")).then([]() { /* We've finished connecting. */ });



    При компиляции ошибки линкера

    Severity Code Description Project File Line Suppression State
    Error LNK2019 unresolved external symbol "public: void __thiscall web::websockets::client::details::websocket_client_task_impl::close_pending_tasks_with_error(class web::websockets::client::websocket_exception const &)" (?close_pending_tasks_with_error@websocket_client_task_impl@details@client@websockets@web@@QAEXABVwebsocket_exception@345@@Z) referenced in function __catch$??R<lambda_6faaa49c60b61750ef16c4ff707b1ae7>@@QBEXV?$task@X@Concurrency@@@Z$0

    Error LNK2019 unresolved external symbol "public: __thiscall web::websockets::client::details::websocket_client_task_impl::websocket_client_task_impl(class web::websockets::client::websocket_client_config)" (??0websocket_client_task_impl@details@client@websockets@web@@QAE@Vwebsocket_client_config@234@@Z) referenced in function "public: __thiscall std::_Ref_count_obj<class web::websockets::client::details::websocket_client_task_impl>::_Ref_count_obj<class web::websockets::client::details::websocket_client_task_impl><class web::websockets::client::websocket_client_config>(class web::websockets::client::websocket_client_config &&)" (??$?0Vwebsocket_client_config@client@websockets@web@@@?$_Ref_count_obj@Vwebsocket_client_task_impl@details@client@websockets@web@@@std@@QAE@$$QAVwebsocket_client_config@client@websockets@web@@@Z)


    Подскажите чего не хватает тут?
    Благодарю за помощь.
     
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,296
    Reputations:
    327
    понимаещь, суть в том что если ты объявил например в исходнике имя HRESULT ololo(int a1, int a2) и обращаешься к нему итд - то компилятор всё это прекрасно скомпилирует - ты же дал ему ОБЪЯВЛЕНИЕ ЭТОГО ИМЕНИ. в противном случае он бы заругал тебя что ты пользуешься идентификатором, которого ни он ни ты не знаете.
    а вот линкер, он же - компоновщик, призван всё что вы там понахуярили превратить в понятное загрузчику операционной системы.
    и вот он видит: вроде всё окей, но в какомто скомпиленном исходнике есть ссылки на то, что он не знает с чем увязать.
    мораль сей басни - ты возможно забыл скомпилировать нужную библиотеку, которая идёт на вход компоновщику вместе с откомпиленным компилятором кодом.