2014年5月11日日曜日

とりあえずBoost.Pythonを使う(0)  Makefile for Homebrewer

Boost PythonをOSXで使ってC++モジュールをPythonから使うことができた。

http://d.hatena.ne.jp/moriyoshi/20091214/1260779899を参考に始めた。

上のサイトのコンパイルオプションだと、コンパイルはとおるけど、エラーが出てしまう。
>>> import basic
>>> a = basic.accumulator()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() should return None, not 'NoneType'

BoostPythonをビルドしたときに使用したPythonを使用しないとコンパイルは通るけど、使用時にエラーが起きるようだ。なので以下のようなMakefileを作ったらうまくいった。

#makefile for boost python
#PYTHON_ROOT = /usr/local/Cellar/python3/3.3.5/Frameworks/Python.framework/Versions/3.3
PYTHON_ROOT = /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7

# location of the Boost Python include files and library
 
BOOST_INC = /usr/local/Cellar/boost/1.55.0_1/include
BOOST_LIB = /usr/local/Cellar/boost/1.55.0_1/lib
 
# compile mesh classes
TARGET = basic
 
$(TARGET).so: $(TARGET).o
    g++ -bundle -Wl $(TARGET).o -lboost_python -L$(BOOST_LIB) -L$(PYTHON_ROOT)/lib -lpython2.7 -o $(TARGET).so
 
$(TARGET).o: $(TARGET).cpp
    g++ -I$(PYTHON_ROOT)/include/python2.7 -I$(BOOST_INC) -fPIC -c $(TARGET).cpp



0 件のコメント:

コメントを投稿