【发布时间】:2016-02-10 08:09:07
【问题描述】:
我有什么:
- 我正在为 Linux 编写 Qt 应用程序(我在 Linx Mint 17.3 64 位工作)
- 我在我的 Qt 项目(Qt 5.5 版)中使用 C++11 功能
- 我想将libslave 添加到我的Qt 项目中。
- libslave 使用已弃用(对于 C++11)
boost::function、boost::shared_ptr、boost::bind和boost::any。
我的麻烦:
当我使用 gcc 编译时(v 整个项目或只有带有 -std=c++11 标志的库 boost 崩溃并出现许多错误。Qt Creator 显示大约 4000 个错误,但它们非常相似,看起来像:
typedef boost::function< void( RecordSet& )> callback; is not complete typeBOOST_NOEXCEPT'does not name a type ~any() BOOST_NOEXCEPT
等等……
我尝试使用 C++11 std 库重写库,但 std 不包含 boost::any 模拟,所以这是个坏主意。
问题:
如何用 c++11 编译 boost(或者至少是 libslave)?
Boost 版本:1.54(来自 repo)
g++ 版本:4.8.4(来自 repo)
Qt版本:5.5(从官网下载)
Linux Mint:17.3 罗莎
更新:
示例: 您可以通过this link下载我尝试编译的代码。
说明:
- 下载压缩包
- 提取
- 转到文件夹,只需键入 make(一切正常)
-
打开 MakeFile 并将 CXX 变量替换为
CXX = g++ -std=c++11
再试一次,你会得到错误。
附:
要编译库,您需要libmysqld-dev、libboost-all-dev、libmysqlclient-dev。
你可能还需要别的东西,但我不记得了。对不起。
【问题讨论】:
-
对不起。第一个错误是“typedef boost::function
回调;类型不完整” -
所以您的程序实际上并没有崩溃,而是您有构建错误?您能否尝试创建一个Minimal, Complete, and Verifiable Example 并展示给我们看?请编辑您的问题以包含该问题。以及来自 MCVE 的实际(完整且未经编辑的)错误。
-
@JoachimPileborg 要创建示例需要编译所有库。我已经将我正在尝试编译的代码添加到我的问题中。关于来自 MCVE 的错误 - g++ 生成此pastebin.com/iU5agusy
标签: linux qt c++11 boost crash