0

プロジェクトにboost_loggingを使用しています。

ファイルの 1 つで、ロギング機能を使用するだけです LDBG_ << "something" が、コンパイルに継ぎ目がなく、次のエラーが発生します。

1>c:\boost\boost_logging\boost\logging\detail\ts\ts_win32.hpp(57) : error C2872: 'CRITICAL_SECTION' : ambiguous symbol    
1>        could be 'c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(314) : RTL_CRITICAL_SECTION CRITICAL_SECTION'   
1>        or 'c:\boost\boost135\boost\detail\lwm_win32_cs.hpp(33) : boost::detail::CRITICAL_SECTION'

奇妙な部分は、これが私の PC の 1 つで正常に機能しているが、他の PC では機能していないことです。そのため、winbase.h インクルードが異なる可能性があります。

編集:

LDBG_ ログの定義方法は次のとおりです。

#include <boost/logging/format_fwd.hpp>
#include <boost/logging/format_ts.hpp>

typedef boost::logging::scenario::usage::use<
        //  the filter is always accurate (but slow)
        //boost::logging::scenario::usage::filter_::change::always_accurate, 
        boost::logging::scenario::usage::filter_::change::often< 10 >,
        //  filter does not use levels
        boost::logging::scenario::usage::filter_::level::no_levels, 
        // the logger is initialized once, when only one thread is running
        boost::logging::scenario::usage::logger_::change::set_once_when_one_thread, 
        // the logger favors speed (on a dedicated thread)
        boost::logging::scenario::usage::logger_::favor::speed> finder;

BOOST_DECLARE_LOG_FILTER(g_log_filter, finder::filter ) 
BOOST_DECLARE_LOG(g_log_dbg, finder::logger)

#define LDBG_ BOOST_LOG_USE_LOG_IF_FILTER(g_log_dbg(), g_log_filter()->is_enabled() ) 
4

1 に答える 1

2

Windows ヘッダーの前にブースト ロギング ヘッダーを含めてみてください。

于 2011-03-01T09:49:10.967 に答える