2013-10-08 2 views
1

은 내가이 샘플부스트 로그 marcro explaination

//[ example_tutorial_trivial 
#include <boost/log/trivial.hpp> 

int main(int, char*[]) 
{ 
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; 
} 

그것은 컴파일 할 수 없습니다를 컴파일하고 실행하려고 여기 부스트 로그 튜토리얼 http://boost-log.sourceforge.net/libs/log/doc/html/index.html

을 따랐다. 오류 그리고 내가 다음과 같이 내 코드를 편집 http://pastebin.com/DcLdWGke

로 돌아 : 그것은 준수

이제
#define BOOST_LOG_DYN_LINK 
//[ example_tutorial_trivial 
#include <boost/log/trivial.hpp> 

int main(int, char*[]) 
{ 
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; 
} 

및 부스트 사이트에서이 marcro에 대해 읽어 .I 잘 작동 : 사용자 정의 경우

라이브러리에서 동적으로로드 된 라이브러리 ("dll"또는 "so")로 이진이 으로 작성되었다고 가정합니다. 그렇지 않으면 이라고 가정합니다. 라이브러리는 정적 모드로 작성됩니다. 이 매크로는 로깅을 사용하는 사용자 사용자의 모든 번역 단위에 대해 정의되거나 정의되지 않은 이어야합니다. 이 매크로는 지원하는 플랫폼에서 자동 링크를 도와줍니다.

내 질문은 : 왜 #define BOOST_LOG_DYN_LINK 컴파일해야합니까?

답변

0

#define BOOST_LOG_DYN_LINK

는 힘에 자신의 별도의 소스가있는 모든 라이브러리, DLL의 대신 정적 라이브러리로 링크 될 것입니다.

참조 : 부스트를 구성하려면 세부 사항

에 대한 \boost_1_xx_0\boost\config\user.hpp는, 그래서 로그 라이브러리는 정적 라이브러리로로드 할 수 없음을 의미합니다 사용자 설정 헤더 <boost/config/user.hpp>

+0

를 사용합니다. 동적 라이브러리로로드해야합니까? –