Как собрать программу используя boost :: asio :: spawn - PullRequest
0 голосов
/ 20 декабря 2018

Как я могу создать программу, использующую Boost Lib?

Я не могу построить пример использования boost::asio:spawn.

  • G ++ версия: 7.3

  • Версия Boost Lib: 1.69

Код:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/spawn.hpp>

int main ()
{
  boost::asio::io_service io_service;

  // Spawn coroutine.
  boost::asio::spawn(io_service,
    [&io_service](boost::asio::yield_context yield_context) {
      // Add more 'work' to the io_service.
      io_service.post([] {
        std::cout << "Other work" << std::endl;
      });

      // Wait on a timer within the coroutine.
      boost::asio::deadline_timer timer(io_service);
      timer.expires_from_now(boost::posix_time::seconds(1));
      std::cout << "Start wait" << std::endl;
      timer.async_wait(yield_context);
      std::cout << "Woke up" << std::endl;
    });

  io_service.run();
}

Ошибка:

boost::asio::experimental::co_spawn has not been declared

1 Ответ

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

Я пытался воспроизвести вашу проблему, но не могу (используя те же версии вашего отчета).

Также посмотрите Live On Wandbox (GCC7.3 / boost1.69) .

Вот что я использую для сборки:

g++ -std=c++11 -pthread -I ~/custom/boost_1_69_0/ -L ~/custom/boost_1_69_0/stage/lib/ test.cpp -lboost_{thread,context,coroutine,system} -DBOOST_COROUTINES_NO_DEPRECATION_WARNING

Это bash oneliner для:

g++ -std=c++11 -pthread \ -I /home/sehe/custom/boost_1_69_0/ \ -L /home/sehe/custom/boost_1_69_0/stage/lib/ \ test.cpp \ -lboost_thread \ -lboost_context \ -lboost_coroutine \ -lboost_system \ -DBOOST_COROUTINES_NO_DEPRECATION_WARNING

...