Friday, October 19, 2007

VS 2005 : It's great to get meaningful error messages...

When dealing with template programming, getting compiler errors can get pretty cryptic. However, VS 2005 did its best to help me:

(note: I replaced <> with { } - since the editor got pretty messed up)
(yes: the error is 5132 characters long)

1}mul_levels_one_logger.obj : error LNK2001: unresolved external symbol "struct boost::logging::detail::log_keeper{struct boost::logging::logger{struct boost::logging::process_msg{struct boost::logging::gather::ostream_like::return_str{class std::basic_ostringstream{char,struct std::char_traits{char},class std::allocator{char} } },struct boost::logging::writer::format_write{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } &,struct boost::logging::manipulator::detail::default_type},struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &,struct boost::logging::manipulator::detail::default_type},struct boost::logging::format_and_write::simple{struct boost::remove_reference{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &} },struct boost::logging::msg_route::simple{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } &,struct boost::logging::manipulator::detail::default_type},struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &,struct boost::logging::manipulator::detail::default_type} },class boost::logging::array::shared_ptr_holder{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } &,struct boost::logging::manipulator::detail::default_type},class boost::logging::threading::mutex_win32},class boost::logging::array::shared_ptr_holder{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &,struct boost::logging::manipulator::detail::default_type},class boost::logging::threading::mutex_win32} } },struct boost::logging::filter::no_ts},&struct boost::logging::logger{struct boost::logging::process_msg{struct boost::logging::gather::ostream_like::return_str{class std::basic_ostringstream{char,struct std::char_traits{char},class std::allocator{char} } },struct boost::logging::writer::format_write{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } &,struct boost::logging::manipulator::detail::default_type},struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &,struct boost::logging::manipulator::detail::default_type},struct boost::logging::format_and_write::simple{struct boost::remove_reference{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &} },struct boost::logging::msg_route::simple{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } &,struct boost::logging::manipulator::detail::default_type},struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &,struct boost::logging::manipulator::detail::default_type} },class boost::logging::array::shared_ptr_holder{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } &,struct boost::logging::manipulator::detail::default_type},class boost::logging::threading::mutex_win32},class boost::logging::array::shared_ptr_holder{struct boost::logging::manipulator::base{class std::basic_string{char,struct std::char_traits{char},class std::allocator{char} } const &,struct boost::logging::manipulator::detail::default_type},class boost::logging::threading::mutex_win32} } },struct boost::logging::filter::no_ts} & __cdecl g_l_boost_log_impl_(void)} g_l" (?g_l@@3U?$log_keeper@U?$logger@U?$process_msg@U?$return_str@V?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@ostream_like@gather@logging@boost@@U?$format_write@U?$base@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Udefault_type@detail@manipulator@logging@boost@@@manipulator@logging@boost@@U?$base@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Udefault_type@detail@manipulator@logging@boost@@@234@U?$simple@U?$remove_reference@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@boost@@@format_and_write@34@U?$simple@U?$base@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Udefault_type@detail@manipulator@logging@boost@@@manipulator@logging@boost@@U?$base@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Udefault_type@detail@manipulator@logging@boost@@@234@@msg_route@34@V?$shared_ptr_holder@U?$base@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Udefault_type@detail@manipulator@logging@boost@@@manipulator@logging@boost@@Vmutex_win32@threading@34@@array@34@V?$shared_ptr_holder@U?$base@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Udefault_type@detail@manipulator@logging@boost@@@manipulator@logging@boost@@Vmutex_win32@threading@34@@array@34@@writer@45@@logging@boost@@Uno_ts@filter@23@@logging@boost@@$1?g_l_boost_log_impl_@@YAAAU123@XZ@detail@logging@boost@@A)

No comments: