生成和导入Boost.python使用GCC的模块?

2024-04-29 15:50:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我成功地编译了一个Boost.Python“first try”,但不确定如何将其导入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);
}

我的生成文件包含:

^{pr2}$

我的测试脚本:

import sys

# My modules.
import ipg

ipg.test()

输出二进制文件放在测试脚本旁边,然后运行测试脚本。这将导致以下错误:

Traceback (most recent call last): File "test.py", line 4, in import ipg ImportError: No module named ipg

我应该使用什么标志来编译我的输出二进制文件,我应该如何将它导入python?我用过boost.Python以前在Windows上,但那是很久以前的事了。在


Tags: 文件方法testimport脚本include二进制namespace
1条回答
网友
1楼 · 发布于 2024-04-29 15:50:18

在Linux上,如果您的模块名为ipg,那么您需要创建一个名为ipg.so的文件。这是一个简单的makefile

ipg.o:
    g++ -o ipg.o -c ipg.cc -Wall -fPIC -I/usr/include/python2.7
ipg.so: ipg.o
    g++ -shared -o ipg.so ipg.o -lpython2.7 -lboost_python -lboost_system

相关问题 更多 >