Как использовать C ++ автономную библиотеку ASIO - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь использовать библиотеку asio в Windows 10, вот простой блок тестового кода:

#include <iostream>
#include <asio.hpp>

using std::cout;

int main()
{
    std::cout << "hello asio\n";
    asio::io_context ioc;
    asio::steady_timer tmer(ioc, asio::chrono::seconds(1));
    tmer.wait();

    cout << "hi asio\n";
    ioc.run();

    return 0;
}

в Visual Studio 2017. Чтобы открыть командную строку разработчика, я использую следующую команду

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools>vsdevcmd

Затем, основываясь на asio doc , я запускаю команду nmake -f Makefile.msc в папке asio src.Но я получаю сообщение об ошибке:

Microsoft (R) Program Maintenance Utility Version 14.16.27025.1
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl -Fetests\latency\tcp_client.exe -Fotests\latency\tcp_client.obj -nologo -EHac -GR -I. -I../include    -O2 -MD        -I../../boost_1_34_1 -D_WIN32_WINNT=0x0501  -DBOOST_ALL_NO_LIB  -DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING tests\latency\tcp_client.cpp  -link -opt:ref
tcp_client.cpp
../include\asio/detail/config.hpp(26): fatal error C1083: Cannot open include file: 'boost/config.hpp': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\cl.EXE"' : return code '0x2'
Stop.

Кажется, библиотека требует boost / config.hpp.Я действительно стараюсь избегать использования наддува.Есть ли способ, которым я мог бы использовать asio автономно на Windows 10?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Чтобы использовать asio без каких-либо расширенных библиотек, вы должны определить ASIO_STANDALONE в какой-то момент.Лучше всего будет в вашем проекте Visual Studio или в вашем коде до любого включения заголовка asio.

0 голосов
/ 27 декабря 2018

Я пытался использовать vcpkg, но оказалось, что мне нужно только загрузить библиотеку и создать файл cmake, чтобы выполнить эту работу.

cmake_minimum_required(VERSION 3.12)

project(asio)
add_definitions(-DASIO_STANDALONE -D_WIN32_WINNT=0x0501) 
# -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB)
# include_directories(${VCPKG_DIR}//asio_x86-windows//include)
include_directories(./../libs/asio-1.12.2/include)
add_executable(asio s5.cpp)
...