«   2018/09   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
Tags
more
Archives
Today
0
Total
2,611
관리 메뉴

갱스

boost::python Embedding 본문

Python

boost::python Embedding

pknam 2017.12.17 17:59

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' 카테고리의 다른 글

boost::python Embedding  (0) 2017.12.17
[Python] decorator  (0) 2015.08.04
selenium example  (0) 2015.03.19
0 Comments
댓글쓰기 폼