반응형

log4cxx는 프로그램의 로그를 기록해주는 역할을 하는 log4j의 개념과 원리를 따서 C++에도 적용할수 있게 한 오픈 프레임워크이다.


Apache에서 주관하였으나 2008년 이후로 최신버전은 나오고 있지 않다. 하지만 아직까지도 많이 쓰이는 대표적 C++ 로그 오픈 프레임워크인 만큼 필요성은 언제나 언급되고 있다.


하지만 log4cxx의 라이브러리를 얻기 위한 컴파일 과정 특히 윈도우 상에서의 컴파일 과정이 생각보다 까다로운 편이라 초보개발자 혹은 컴퓨터 전공 대학생들은 쉽게 따라하기가 어려운 케이스가 존재한다.


이 글을 작성하는 것은 서술식으로 전문용어가 주르륵 나열되어 있어 마치 지식 자랑을 뽐내는 듯한 블로그 포스팅을 지양하고, 최대한 사진을 포함하여  누구나 쉽게 컴파일을 할수 있도록 하는 것에 그 목적이 있다.



이 과정만 따라가면 누구나 컴파일을 할수 있을 것이다. 그 누구나의 최소 기준은 컴퓨터를 전공으로 할 계획이 있는 고등학생이다. 


일반인은 log4cxx와 같은 로그 오픈 프레임워크 자체를 만져볼 일이 거의 없을 것이기 때문이다.



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


log4cxx를 윈도우에서 사용하기 위해서는 컴파일을 통해 log4cxx.liblog4cxx.dll을 생성해야 함. 컴파일 과정이 다음과 같음.



 

1. apache log4cxx 0.10.0 다운로드 http://logging.apache.org/log4cxx/latest_stable/download.html

-> Mirrosapache-log4cxx-0.10.0.zip 클릭후 다운로드

 



2. APRAPR-util을 다운로드 : http://apr.apache.org/download.cgi

-> apr-1.5.2-win32-src.zip 과 apr-util-1.5.4-win32-src.zip 클릭하여 다운로드





 


 

 


3. 각각 압축을 풀면 아래와 같은 결과물이 나오는데 apr-1.5.2 -> aprapr-util-1.5.4apr-util로 반드시 이름 변경 할 것








 

 



4. cmd에 들어가 apache-log4cxx-0.10.0 폴더로 들어간뒤 configure.batconfigure-aprutil.bat을 실행시킨다.

   cmd 내에서 폴더 이동 방법은 ‘cmd 명령어를 검색해 알아볼 것.


=> configure-aprutil.bat을 실행할 때 오류가 나는데 안나면 다행이고 오류가 나도 이상할건 없다무시해도 상관없다.






 

 


 



5. apache-log4cxx-0.10.0
폴더에 project 폴더가 존재한다. project 폴더로 들어간뒤 log4cxx.dsw를 더블클릭해서 솔루션을 실행시킨다 업그레이드도 실행 할 것.


<apache-log4cxx-0.10.0 폴더 내부>


<apache-log4cxx-0.10.0의 project 폴더 내부>


 


 

 

혹시나 log4cxx.dsw를 실행했을때 위와 같은 단방향 업그레이드 안내가 뜰경우에 확인하여 넘길 것.(취소하면 안된다)



 

 

6. log4cxx 프로젝트에 우클릭 한다음 시작프로젝트로 설정을 클릭한다.

 


 

 

7. 솔루션 탐색기에서 apu.hw 검색 후 소스 코드에서 #define APU_HAVE_APR_ICONV를 찾으면 1이라 되어있을건데 0으로 수정



<솔루션 탐색기에서 apu.hw 검색 결과>



<apu.hw 소스코드에 APU_HAVE_APR_ICONV를 1에서 0으로 바꿈>




8. 7번과 똑같은 과정으로 솔루션 탐색기에서 apr_ldap.hw에서 #define APR_HAS_LDAP 부분이 1로 되어있을 것인데 0으로 바꿔준다.

=> 과정은 7번과 완전히 똑같다. 


 

9. 빌드를 한다.(단축키 : Ctrl+Alt+B)



 


10. apache-log4cxx-0.10.0\projects\Debuf
폴더에 결과물을 확인한다.

=> log4cxx.dll과 log4cxx.lib 두개의 파일이 존재해야만 컴파일이 완전히 성공한 것이다.



 


 


 

* “error C2252: 템플릿은 네임스페이스 범위에서만 명시적으로 인스턴스화할 수 있습니다.” 오류가 발생할 경우 해결 방법

 

1) 솔루션 탐색기에 stringhelper.cpp 검색후 소스코드 들어가서 #include <iterator> 구문 추가

 

2) 솔루션 탐색기에 log4cxx.h 검색후 소스코드 들어가서

 

template class LOG4CXX_EXPORT std::allocator<T>;\

template class LOG4CXX_EXPORT std::vector<T>;\

 

extern template class LOG4CXX_EXPORT std::allocator<T>; \

extern template class LOG4CXX_EXPORT std::vector<T>; \

 

를 삭제한다.

 

*"error LNK2019: _imp_UuidCreate@4 외부 기호(참조 위치:_apr_os_uuid_get@4 함수)에서 확인하지 못했습니다." 오류가 발생할 경우 해결방법


=> Rpcrt4.lib을 링크에 추가


위 두개의 에러 발생시 자세한 처리 과정은 추후 다룰 예정.




+ Recent posts