我正在尝试使用来自http://www.boost.org/doc/libs/1_58_0/libs/log/doc/html/log/tutorial/trivial_filtering.html的简单代码来使用boost日志。我在Windows 8.1上使用cblock:AMD-A8上的codeblock 13.12。代码如下:
#include <boost/fusion/iterator/equal_to.hpp>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
using namespace std;
void init()
{
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::info
);
}
int main()
{
init();
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
return 0;
}
错误消息是: C:\ Java \ boost_1_55_0 / boost / smart_ptr / detail / sp_convertible.hpp:在'struct boost :: detail :: sp_enable_if_convertible'的实例化中: C:\ Java \ boost_1_55_0 / boost / smart_ptr / intrusive_ptr.hpp:76:5:替换'template boost :: intrusive_ptr :: intrusive_ptr(const boost :: intrusive_ptr&amp;,typename boost :: detail ::) sp_enable_if_convertible :: type)[with U = boost :: log :: v2s_mt_nt5 :: attribute_value :: impl]' C:\ Java \ boost_1_55_0 / boost / log / attributes / attribute_value.hpp:95:20:从这里要求 C:\ Java \ boost_1_55_0 / boost / smart_ptr / detail / sp_convertible.hpp:81:37:警告:基类'struct boost :: detail :: sp_enable_if_convertible_impl'有一个非虚析构函数[-Weffc ++] 在C:\ Java \ boost_1_55_0 / boost / log / attributes / attribute_value_set.hpp:27:0中包含的文件中, 来自C:\ Java \ boost_1_55_0 / boost / log / core / record.hpp:21, 来自C:\ Java \ boost_1_55_0 / boost / log / core / core.hpp:23, 来自C:\ Java \ boost_1_55_0 / boost / log / core.hpp:20, 来自C:\ Workspace \ FileReconciliation \ main.cpp:3:
用于编译的CodeBlock命令是: mingw32-g ++。exe -Weffc ++ -std = c ++ 11 -Wall -fexceptions -Weffc ++ -pedantic -g -IC:\ Java \ boost_1_55_0 -Iinclude -c C:\ Workspace \ FileReconciliation \ main.cpp -o obj \ Debug \ main.o
无论我把它放在哪里,包括:
#include <boost/smart_ptr/intrusive_ptr.hpp>
它总是给我相同的错误信息。我尝试了升压1_55_0,1_59_0和1_60_0。如果我删除init(),它会编译而不会出错。
我google了很多,找不到答案。有人可以帮忙吗? 非常感谢 GT
答案 0 :(得分:0)
logging
缺少名称空间定义。
#include代码块之后需要以下语句。
// Alias for shorter namespaces.
namespace logging = boost::log;
答案 1 :(得分:0)
我通过使用:“ - std = gnu ++ 11”而不是“-std = c ++ 11”来解决问题。 我花了几天时间......