2013-07-08 36 views
10

Tôi đang cố sử dụng thư viện Nhật ký tăng cường và tôi muốn thêm dấu thời gian vào đầu ra. Tôi bắt đầu từ số this example, nhưng tôi đã gặp phải lỗi biên dịch. Tôi đã sao chép chính xác mã như trong ví dụ và thay đổi hàm init() thành hàm thứ hai (example_tutorial_formatters_stream_date_time). Bây giờ tôi có lỗi biên dịch sau đây:Lỗi biên dịch với thư viện Nhật ký tăng cường khi sử dụng date_time_formatter

$ g++ -Wall -Wextra -O0 -g -isystem /proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include -c main.cpp -o main.o 
In file included from /proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters.hpp:23:0, 
       from /proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions.hpp:26, 
       from main.cpp:109: 
/proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters/date_time.hpp: In instantiation of 'boost::log::v2s_mt_posix::expressions::format_date_time_terminal<T, FallbackPolicyT, CharT>::format_date_time_terminal(const boost::log::v2s_mt_posix::attribute_name&, const fallback_policy&, const string_type&) [with T = boost::posix_time::ptime; FallbackPolicyT = boost::log::v2s_mt_posix::fallback_to_none; CharT = char; boost::log::v2s_mt_posix::expressions::format_date_time_terminal<T, FallbackPolicyT, CharT>::fallback_policy = boost::log::v2s_mt_posix::fallback_to_none; boost::log::v2s_mt_posix::expressions::format_date_time_terminal<T, FallbackPolicyT, CharT>::string_type = std::basic_string<char>]': 
/proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters/date_time.hpp:229:94: required from 'boost::log::v2s_mt_posix::expressions::format_date_time_actor<AttributeValueT, boost::log::v2s_mt_posix::fallback_to_none, CharT> boost::log::v2s_mt_posix::expressions::format_date_time(const boost::log::v2s_mt_posix::attribute_name&, const CharT*) [with AttributeValueT = boost::posix_time::ptime; CharT = char]' 
main.cpp:156:103: required from here 
/proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters/date_time.hpp:94:68: error: incomplete type 'boost::log::v2s_mt_posix::expressions::format_date_time_terminal<boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, char>::formatter_generator {aka boost::log::v2s_mt_posix::expressions::aux::date_time_formatter_generator_traits<boost::posix_time::ptime, char, void>}' used in nested name specifier 
     m_name(name), m_formatter(formatter_generator::parse(format)), m_visitor_invoker(fallback) 
                    ^

tôi đã cố gắng sử dụng gcc 4.7.2 và 4.8.1 có và không có -std=c++11 cờ, nhưng tôi có cùng một kết quả mỗi lần. Dường như lỗi nằm trong thư viện Boost, điều này lạ với tôi vì ngay cả ví dụ chính thức cũng không biên dịch.

+2

Thử thêm '#include '. –

Trả lời

18

Vấn đề là cần bao gồm <boost/log/support/date_time.hpp>. Nó cũng được ghi trong tài liệu ở nơi thích hợp, nhưng bằng cách nào đó đã bị loại bỏ khỏi ví dụ.

Các vấn đề liên quan