2016년 6월 16일 목요일

사람 피 말려 죽이려는 Boost.Log

이 새벽에 포스팅이라뉘...

Local volatility 모형을 작업하기 위해서


c++ 플젝을 생성하고 눈누난나 작업을 시작했다.


당연히 QuantLib과Boost를 임포트 하고 진행..

문제는 로깅에서 나타났다.

부스트에 있는 로깅클래스의 성능이 좋다는 평이 있어서

#include <boost/log/trivial.hpp>

를 하는 순간부터였던것 같다.. 내 삶이 피폐해진것이...

구글링 구글링~~~

자주 목격한 boost.Log와 ThirdParty간의 충돌문제..

해결책 1.
http://www.boost.org/doc/libs/1_56_0/libs/log/doc/html/log/rationale/namespace_mangling.html

아무리바도 먼말인지 모르겠어서 몇번을 읽어 보니

BOOST_LOG_DYN_LINK 또는 BOOST_LOG_ALL_LINK를 정의해봐라 이얘긴데

이얘기가

boost_root/boost/config/user.hpp

파일 내부에

#define BOOST_LOG_DYN_LINK
또는
#define BOOST_LOG_ALL_LINK

문구를 집어 넣으라는 얘기 였음. 이걸 알아내는데 까지 2주 걸린듯... ㅠㅠ

해봤지.. 몇번이나..버전문제인가 해서 새버젼 받아서도 해봄. 부스트 정말 20번은 빌드 해봤음....지금 포스팅을 하는 오늘도 열번은 족히했다..ㅠㅠ

일단 저건 해결책 아녔다는것도 알아차리는데 한참걸렸다.

해결책 2.
 https://github.com/boostorg/log/issues/28

 저 글을 읽었을때 깜놀...엇 나 windows10인데...나랑 에러메시지도 같애.. 헐퀴 머지

가만히 읽어 보니 부스트 빌드할때 대상플랫폼을 지정해줘야 한다는 얘기.


마찬가지로 비스타 버전, 윈7버전, 윈8 버전 윈10버전 다 빌드 해봄, 위에 내용하고 엮어서 BOOST_LOG_DYN_LINK이것도 넣고 해보고 빼고 해보고 새로 받아서 다시 해보고 이 내용을 알고난후 빌드 빌드 빌드 빌드 ,,,삭제..빌드 반복 출근..퇴근...빌드

 해결책 3.
딱 오늘 새벽 2시가 넘었을때 그래 인제 포기 하자 포기!!!!
라고 생각하고 마지막으로 튜토리얼은 돌아가는지 확인 하려고 튜토리얼 만듬. 돌림. 돌아감. 머지.. 왜 돌아가지? 그럼 위의 두가지 문제는 절대 아니겠네..define 할것을 안했거나 대상플랫폼이 잘못 지정되면 돌아갈리가 만무한데..

혹시나 해서 퀀립 임포트 함..
돌아감..

동공지진..

이전에 만들었던 플젝과 비교했을때 차이는 하나였음. 기존 플젝은 local vol작업을 위한 플젝이라서 이것저거 하다가 로그가 필요해서 include 한것이고 이번건 순수 Boost.Log 튜토리얼이라서 가장 처음에
#include <boost/log/trivial.hpp>

하고있다.... 헐퀴...인클루드 순서였음.

나랑 비슷한분 발견...

http://www.gpgstudy.com/forum/viewtopic.php?p=39360

아ㅡㅇ민ㅇ러ㅐ쟈ㅗㄷ라넝퓨ㅑ며ㅗㄴㄹ어리쟏렂ㄷ러ㅣ파타처ㅗㅍㅈ

그랬음...c++의 경우 몇몇의 파일들은 인클루드 순서가 있었다능...
windows 응용프로그램 만들때 몇번 겪어본건데...흐앙

마지막 링크의 문답중에서 이런 문구가 가슴을 후벼판다..

실용주의 프로그래머의 표현을 빌리자면 "우연에 맡기는 컴파일" 이라고 볼 수 있겠군요.

나는 우연에 맡겼던것이야~~~

멀고도 험한 인생길 오늘은 다리 뻗고 자겠군 크하하하하하하핳


오늘의 나의 삽질기 기록 끝~~~~!~!~!~!