Boost PythonをOSXで使ってC++モジュールをPythonから使うことができた。
http://d.hatena.ne.jp/moriyoshi/20091214/1260779899を参考に始めた。
上のサイトのコンパイルオプションだと、コンパイルはとおるけど、エラーが出てしまう。
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 件のコメント:
コメントを投稿