갱스
boost::python Embedding 본문
C++ 프로그램에 Python embedding을 해보았다. Python을 설치하면 생기는 헤더/라이브러리 파일만을 이용해 개발할 수도 있지만 C++가 아닌 C로 개발해야 해서 생산성이 떨어진다
boost::python은 그것을 클래스로 잘 래핑해놓은 것이다. 아래 기록은 삽질해보면서 기록한 거라 정리된 상태가 아니다
boost 다운받고 압축 푼다.
boost 경로에서
cmd> boostrap.bat
project-config.jam 파일이 생겼을 것. 이 파일을 열고
using python : 3.6 : C:\Users\pknam\Anaconda3 : : : <address-model>64 ;
라인을 추가한다
다시 boost 경로에서
cmd> b2 -j4 --toolset=msvc-14.0 --build-type=complete architecture=x86 address-model=64 stage
30분정도 걸린다
static lib를 빌드하려면 그냥
cmd> b2
만 입력한다
여기까지 했으면 Boost 설치경로의 stage\lib 폴더에 boost로 시작하는 lib파일들과 dll파일들이 잔뜩 있을 것
static lib를 빌드했다면 lib파일들만 있을 것
visual studio 프로젝트 설정
추가포함 디렉터리
(Python 설치경로)\include
(Boost 설치경로)
추가라이브러리 디렉터리
(Python 설치경로)\libs
(Boost 설치경로)\stage\lib
그리고 (Boost 설치경로)\stage\lib의 dll파일을 제대로 접근할 수 있도록 Debug/Release 폴더에 복사해둔다
boost python은 dynamic linking이 기본값이기 때문에
static lib를 쓰려면
#include <boost/python.hpp>
전에
#define BOOST_PYTHON_STATIC_LIB
를 해준다
여기까지 했으면 boost python개발환경 구축 완료.
TODO:
boost로 시작하는 lib파일들은 dynamic link를 위한 lib파일들
libboost로 시작하는 lib파일들은 static library 파일들
boost를 사용할 때 어떻게 설정해줘야 static lib을 쓸 것인 지 dll을 쓸 것인 지 설정할 수 있는 지 조사
'Python' 카테고리의 다른 글
[Python] decorator (0) | 2015.08.04 |
---|---|
selenium example (0) | 2015.03.19 |