我已经设法编译了一个 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()
输出二进制文件放在测试脚本旁边,然后运行测试脚本。这会导致以下错误:
Traceback(最近一次调用最后一次):文件“test.py”,第 4 行,在 import ipg ImportError: No module named ipg
我应该使用什么标志来编译我的输出二进制文件,我应该如何将它导入 python?我以前在 Windows 上使用过 boost.Python,但那是很久以前的事了。