c++ - boost asio 无法识别计时器对象
问题描述
我正在尝试从boost 文档timer2运行 boost 示例
这是代码:
#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;
}
我收到以下错误:错误:'io_context'不是
'boost::asio' 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' 不是'boost::asio'的成员<br /> 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); ^ /home/mosh/Desktop/untitled1/main.cpp:65:3:注意:建议的替代方案:'tm' t.async_wait(&print); ^ tm /home/mosh/Desktop/untitled1/main.cpp:67:3: 错误:“io”未在此范围内声明 io.run(); ^~
解决方案
因为你有 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;
}
另外,不要忘记将您的 make/CMake 文件链接到 boost_system
推荐阅读
- javascript - vuejs - 如何将道具和事件动态传递给动态组件
- xliff - OKAPI:在将 doc/ppt 文件解析到 xliff 时添加分页符标记/元素
- laravel - Laravel,将路由参数限制为表列值
- c - 圆形滚动数组
- java - 如何编写从物理扫描仪设备扫描图像的 java 代码?
- kotlin - 在 Android 中创建改造服务的正确方法?
- c++ - 指针指向哪里?
- vue.js - Vuejs根据单选按钮选择更改路由器路径
- php - 如何在 Laravel 刀片文件的嵌套集自定义函数中传递控制器数据值
- python - Django admin 如何解决所有部分不可见的问题?