Boost.Python の「最初の試行」をコンパイルすることができましたが、それを Python にインポートして、それに含まれるメソッドを呼び出す方法がわかりません。私のソースファイルは次のとおりです。
#include <stdlib.h>
#include <string>
#include <boost/python.hpp>
using namespace boost::python;
int test(int i)
{
fprintf(stderr, "%s:\n", __FUNCTION__);
return i * 5;
}
BOOST_PYTHON_MODULE(ipg)
{
using namespace boost::python;
def("test", test);
}
私のmakefileには以下が含まれています:
# Which compiler?
CC=c++
# Which flags for object files?
OFLAGS=-c -Wall -fPIC
# Which flags for the output binary?
BFLAGS=-Wall -shared -o ipg
# Which flags for boost python?
BPFLAGS=-I/usr/include/python2.7
BLIBS=-lpython2.7 -lboost_python -lboost_system
# Make.
all: source/python.cpp
$(CC) $(BOUT) $(BFLAGS) $(BPFLAGS) $? $(BLIBS)
そして私のテストスクリプト:
import sys
# My modules.
import ipg
ipg.test()
出力バイナリはテスト スクリプトと一緒に配置され、テスト スクリプトが実行されます。これにより、次のエラーが発生します。
トレースバック (最新の呼び出しが最後): ファイル "test.py"、4 行目、インポート ipg の ImportError: ipg という名前のモジュールはありません
出力バイナリをコンパイルするにはどのフラグを使用する必要がありますか? また、それを Python にインポートするにはどうすればよいですか? 以前に Windows で boost.Python を使用したことがありますが、それはかなり前のことです。