关键词:
【中文标题】如何在 Ubuntu 14.04 上的 QT creator 中使用 Boost 库【英文标题】:How to use Boost library in QT creator on Ubuntu 14.04 【发布时间】:2016-09-24 08:12:51 【问题描述】:我想在 Ubuntu 14.04 上使用 QT creator 中的 C++ Boost 库,尝试了很多方法后,我仍然报错。
我使用以下方式安装了 Boost 库:
sudo apt-get install libboost-all-dev
Boost库安装在目录中:
/usr/include/boost
这是我的 main.cpp
#include <QCoreApplication>
#include<iostream>
#include <boost/asio.hpp>
#include <boost/asio/steady_timer.hpp>
using namespace std;
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
boost::asio::steady_timer timer_;
timer_.expires_from_now(1000);
return a.exec();
任何我的 .pro 文件:
QT += core
QT -= gui
CONFIG += c++11
TARGET = test_boost_lib_in_QT
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += /usr/include/boost
LIBS += -L/usr/include/boost -lboost_system
LIBS += -L/usr/include/boost -lboost_chrono
LIBS += -L/usr/include/boost -lboost_thread
LIBS += -L/usr/include/boost -lboost_timer
编译错误是:(我使用“ctrl+B”直接从QT编译)
/home/ndn-experiment/Desktop/test_boost_lib_in_QT/main.cpp:13: error: no matching function for call to 'boost::asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::basic_waitable_timer()'
boost::asio::steady_timer timer_;
^
/home/ndn-experiment/Desktop/test_boost_lib_in_QT/main.cpp:14: error: no matching function for call to 'boost::asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::expires_from_now(int)'
timer_.expires_from_now(1000);
^
我该怎么办?
【问题讨论】:
首先 - asio 需要 io_service。 stable_timer 没有默认构造函数。第二 - expires_from_now 需要一个持续时间作为参数。 int 参数没有重载。 【参考方案1】:第一个是因为你需要将io_service
传递给构造函数:
boost::asio::io_service io;
boost::asio::steady_timer timer(io);
第二个是因为expires_from_now
不带int
,它需要一个duration
参数:
timer.expires_from_now(boost::posix_time::seconds(5));
检查documentation 也是一个好主意,它有用法示例。
【讨论】:
【参考方案2】:在网上浏览了这么多帖子,遇到了这么多错误,我终于让我的程序运行起来了。 在此我想回答我自己的问题,强调两点:
另一种创建类对象的方法,该类的构造函数接受多个参数
boost::asio::steady_timer
的正确使用方法
我的 main.cpp
#include <QCoreApplication>
#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/steady_timer.hpp>
#include <chrono>
#include <boost/chrono.hpp>
using namespace std;
typedef boost::asio::steady_timer timer_type;
class timer_expire
public:
timer_expire(boost::asio::io_service& io):timer_(io)
void timer_expires(int n_milliseconds)
timer_.expires_from_now(boost::chrono::milliseconds(n_milliseconds));
//need timer_.async_wait() here
private:
timer_type timer_;
;
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
boost::asio::io_service io;
timer_expire timer_expire_(io);
timer_expire_.timer_expires(10000);
return a.exec();
我的 .pro 文件(请注意QMAKE_CXXFLAGS
)
QT += core
QT -= gui
CONFIG += c++11
TARGET = test_boost_lib_in_QT
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
CONFIG += c++11
QMAKE_CXXFLAGS += -std=c++11
INCLUDEPATH += /usr/include/boost
QMAKE_CXXFLAGS += -DBOOST_ASIO_DISABLE_STD_CHRONO
LIBS += -L/usr/include/boost -lboost_system -lboost_chrono -lboost_thread -lboost_timer
我的g++
版本是4.8.4
注意boost::asio::steady_timer
还有另一种方法,将QMAKE_CXXFLAGS
设置为-DBOOST_ASIO_HAS_STD_CHRONO
,请参考post。
也可以看看Chrono。
【讨论】:
您的包装类很糟糕,因为它确实隐藏了持续时间的类型。原来的界面你可以通过几小时、几秒等等。您的界面没有给出任何提示,它需要几毫秒,而原来的界面是类型安全的。 @stefan 只是一个玩具类,用于展示如何成功编译 boost::asio::steady_timer。Ubuntu 14.04TLA 上的代码块和 Gtkmm
...是Windows用户,所以我对Linux环境非常陌生。我真的不知道如何在Linux环境中安装应用程序。请我需要有关如何使用MinGWforUbuntu获取代码块以及如何配置它的帮助。我还需要有关 查看详情
如何卸载ubuntu14.04上的git
参考技术A1)当我们知道软件的名称,那么我们就直接在终端命令窗口中输入命令就可以了:sudoapt-getremove--purgegoogle-chrome-unstable--purge选项表示彻底删除改软件和相关文件2)如果还是卸载不掉的话,那推荐你用卸载能力很强的腾... 查看详情
在 Ubuntu 14.04 上安装 Qt 5.5.1 - 在终端上抛出 qt.network.ssl 错误
】在Ubuntu14.04上安装Qt5.5.1-在终端上抛出qt.network.ssl错误【英文标题】:InstallingQt5.5.1onUbuntu14.04-throwsqt.network.sslerroronterminal【发布时间】:2015-12-2108:15:19【问题描述】:我打算在虚拟机上运行的ubuntu14.04上安装qt5.5.1。我已经从qt-io... 查看详情
如何卸载ubuntu14.04上的git
参考技术A比如利用第三方软件。我用腾讯电脑管家举例(免费安全软件,杀毒+管理2合1)。打开腾讯电脑管家——工具箱——软件卸载。电脑管家是直接把软件卸载同时把注册列表也就清理了。(有的软件重启后会自动删除)... 查看详情
如何制作响应 ubuntu 14.04 和 16.04 上的 syslog 事件的 c# 程序?
】如何制作响应ubuntu14.04和16.04上的syslog事件的c#程序?【英文标题】:Howtomakeac#programthatrespondstosyslogeventsonubuntu14.04and16.04?【发布时间】:2019-02-2215:49:26【问题描述】:我响应系统日志事件的解决方案在几个小时后停止工作。我... 查看详情
如何在本地 ubuntu14.04 上使用域名设置服务器?
】如何在本地ubuntu14.04上使用域名设置服务器?【英文标题】:HowtosetupserverwithDomainnameonlocalubuntu14.04?【发布时间】:2016-11-0318:48:09【问题描述】:如何在本地机器上的灯上设置域名?【问题讨论】:您好!浏览此链接肯定会对您... 查看详情
在 DigitalOcean Ubuntu 14.04 中的 Meteor 上的 Webshot 失败
】在DigitalOceanUbuntu14.04中的Meteor上的Webshot失败【英文标题】:WebshotfailsonMeteorinDigitalOceanUbuntu14.04【发布时间】:2016-05-1223:47:46【问题描述】:我正在使用此代码生成pdf:letfileUri=process.env.PWD+\'/storage/orders-pdf/\'+fileName;//CommenceWebshot 查看详情
npm 全局安装后如何在 Virtual Box Ubuntu 14.04 中修复 $PATH
】npm全局安装后如何在VirtualBoxUbuntu14.04中修复$PATH【英文标题】:howtofix$PATHinVirtualBoxUbuntu14.04afternpmglobalinstall【发布时间】:2015-12-2716:35:13【问题描述】:我一直在尝试使用ubuntu14.04和Apache2.4在虚拟机中全局安装npm,但Laravel5.1存... 查看详情
Java/Ubuntu - 在 Windows 上的主要工作之外打印,但在 Ubuntu 14.04 上不执行任何操作
】Java/Ubuntu-在Windows上的主要工作之外打印,但在Ubuntu14.04上不执行任何操作【英文标题】:Java/Ubuntu-PrintoutsideofmainworksonWindowsbutdoesnothingonUbuntu14.04【发布时间】:2016-08-2023:52:31【问题描述】:我有一个Intellij项目。我在Windows上编... 查看详情
ubuntu14.04+qt5.7.1(静态编译)
...870.html参考链接:http://blog.sina.com.cn/s/blog_6f3d8a850102vwfx.htmlUbuntu安装Qt时默认为动态编译,编译的结果运行时需要配置很多库,如果要在多台设备上测试,静态编译就显得很方便。测试环境:ubuntu14.04+Qt5.7.11、源码下载, 查看详情
Ubuntu 14.04 上的 Laravel 5.1 本地主机错误
】Ubuntu14.04上的Laravel5.1本地主机错误【英文标题】:LocalhostErrorwithLaravel5.1onUbuntu14.04【发布时间】:2016-02-2123:32:30【问题描述】:在这里看过以前的文章,但没有运气。我刚刚通过composer安装了Laravel5.1。我一直在关注位于here的官... 查看详情
在 AWS g2 上的 Ubuntu 14.04 上使用带 GPU 的 Theano
】在AWSg2上的Ubuntu14.04上使用带GPU的Theano【英文标题】:UsingTheanowithGPUonUbuntu14.04onAWSg2【发布时间】:2014-08-3103:36:33【问题描述】:我无法让Theano在我的机器上使用GPU。当我跑步时:/usr/local/lib/python2.7/dist-packages/theano/misc$THEANO_FLAGS... 查看详情
Vagrant 挂在 Ubuntu 14.04 上的 NFS 挂载
】Vagrant挂在Ubuntu14.04上的NFS挂载【英文标题】:VagranthangsonNFSmountingonUbuntu14.04【发布时间】:2015-10-2211:46:17【问题描述】:直到今天,我的vagrant设置运行良好且流畅。但是发生了一些事情,我不知道是什么。突然间,当我vagrantup... 查看详情
在 Ubuntu 14.04 上以 Yarn-Client 模式在 Spark 上的 Zeppelin 中加载外部依赖项
】在Ubuntu14.04上以Yarn-Client模式在Spark上的Zeppelin中加载外部依赖项【英文标题】:LoadingexternaldependenciesinZeppelinonSparkinYarn-ClientmodeonUbuntu14.04【发布时间】:2017-01-1614:36:28【问题描述】:亲爱的社区!在我描述问题之前,这里先简... 查看详情
Qt WebEngine 未在 Ubuntu 14.04 上与 Qt 5.12 链接
】QtWebEngine未在Ubuntu14.04上与Qt5.12链接【英文标题】:QtWebEnginenotlinkingwithQt5.12onUbuntu14.04【发布时间】:2019-08-1611:37:47【问题描述】:我正在尝试构建我的Qt应用程序,但出现以下链接错误:/opt/Qt5.12.2/5.12.2/gcc_64/lib/libQt5WebEngineCore.... 查看详情
如何在 Ubuntu 14.04 中使用 systemctl
】如何在Ubuntu14.04中使用systemctl【英文标题】:HowtousesystemctlinUbuntu14.04【发布时间】:2016-09-2303:30:21【问题描述】:我尝试在Ubuntu14.04中执行以下命令:systemctlenable--nowdocker-cleanup-dangling-images.timer我也用sudo尝试过,我尝试用service... 查看详情
如何在 Ubuntu 14.04 上安装 MarkLogic 8?
】如何在Ubuntu14.04上安装MarkLogic8?【英文标题】:HowdoesoneinstallMarkLogic8onUbuntu14.04?【发布时间】:2015-09-0523:42:26【问题描述】:在Ubuntu14.04上安装MarkLogic8的步骤是什么?【问题讨论】:你看过官方文档的安装说明了吗?docs.marklogi... 查看详情
Ubuntu 14.04 上的虚拟主机。 - 访问禁止错误 403
】Ubuntu14.04上的虚拟主机。-访问禁止错误403【英文标题】:VirtualHostsonUbuntu14.04.-AccessForbiddenError403【发布时间】:2015-05-2421:42:11【问题描述】:抱歉,如果我的解释不完整或格式错误,我是Ubuntu新手。而且不是真正的计算机用户... 查看详情