简体   繁体   English

boost asio 无法识别计时器 object

[英]boost asio doesn't recognize timer object

I'm trying to run boost example from the boost documentation timer2我正在尝试从boost 文档timer2 运行 boost 示例

this is the code:这是代码:

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

void print(const boost::system::error_code& /*e*/)
{
  std::cout << "Hello, world!" << std::endl;
}

int main()
{
  boost::asio::io_context io;

  boost::asio::steady_timer t(io, boost::asio::chrono::seconds(5));
  t.async_wait(&print);

  io.run();

  return 0;
}

and I'm getting the following errors: error: 'io_context' is not a我收到以下错误:错误:'io_context'不是

member of 'boost::asio' boost::asio::io_context io; 'boost::asio' boost::asio::io_context io 的成员; ^~~~~~~~~~ /home/mosh/Desktop/untitled1/main.cpp:62:16: note: suggested alternative: 'connect' boost::asio::io_context io; ^~~~~~~~~~ /home/mosh/Desktop/untitled1/main.cpp:62:16:注意:建议的替代方案:'connect' boost::asio::io_context io; ^~~~~~~~~~ connect /home/mosh/Desktop/untitled1/main.cpp:64:16: error: 'steady_timer' is not a member of 'boost::asio' ^~~~~~~~~~ connect /home/mosh/Desktop/untitled1/main.cpp:64:16: error: 'steady_timer' 不是 'boost::asio' 的成员
boost::asio::steady_timer t(io, boost::asio::chrono::seconds(5)); boost::asio::steady_timer t(io, boost::asio::chrono::seconds(5)); ^~~~~~~~~~~~ /home/mosh/Desktop/untitled1/main.cpp:64:16: note: suggested alternative: 'deadline_timer' boost::asio::steady_timer t(io, boost::asio::chrono::seconds(5)); ^~~~~~~~~~~~ /home/mosh/Desktop/untitled1/main.cpp:64:16: 注意:建议的替代方案:'deadline_timer' boost::asio::steady_timer t(io, boost: :asio::chrono::seconds(5)); ^~~~~~~~~~~~ deadline_timer /home/mosh/Desktop/untitled1/main.cpp:65:3: error: 't' was not declared in this scope t.async_wait(&print); ^~~~~~~~~~~~ deadline_timer /home/mosh/Desktop/untitled1/main.cpp:65:3: error: 't' is not declared in this scope t.async_wait(&print); ^ /home/mosh/Desktop/untitled1/main.cpp:65:3: note: suggested alternative: 'tm' t.async_wait(&print); ^ /home/mosh/Desktop/untitled1/main.cpp:65:3:注意:建议的替代方案:'tm' t.async_wait(&print); ^ tm /home/mosh/Desktop/untitled1/main.cpp:67:3: error: 'io' was not declared in this scope io.run(); ^ tm /home/mosh/Desktop/untitled1/main.cpp:67:3: 错误:'io' 未在此 scope io.run() 中声明; ^~ ^~

because you have boost version 1.58 you need to change your code according to the relevant version .因为你有 boost 1.58 版本,你需要根据相关版本更改你的代码。

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp> // <- look at this header

void print(const boost::system::error_code& /*e*/)
{
  std::cout << "Hello, world!" << std::endl;
}

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

  boost::asio::deadline_timer t(io, boost::posix_time::seconds(5)); //<- this deffernt 
  t.async_wait(&print);

  io.run();

  return 0;
}

also, don't forget to link in your make/CMake file to boost_system另外,不要忘记将您的 make/CMake 文件链接到 boost_system

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM