如何将Boost模块从C ++导入python?

时间:2018-12-28 12:58:49

标签: python c++ boost boost-python

以下是我要导入的C ++代码。

#include <boost/python.hpp>
#include <string>

/*
 * This is the C++ function we write and want to expose to Python.
 */
const std::string hello() {
    return std::string("hello, zoo");
}

/*
 * This is a macro Boost.Python provides to signify a Python extension module.
 */
BOOST_PYTHON_MODULE(zoo) {
    // An established convention for using boost.python.
    using namespace boost::python;

    // Expose the function hello().
    def("hello", hello);
}

以下代码是python脚本。

import zoo     # In zoo.cpp we expose hello() function, and it now exists 
                  in the zoo module.

assert 'hello' in dir(zoo)   # zoo.hello is a callable.

assert callable(zoo.hello)   # Call the C++ hello() function from Python.

print zoo.hello()

当我尝试运行脚本时,在终端上我没有得到“ hello,zoo”作为输出。我在哪里犯错了?

以下是我收到的错误消息:

导入:未经授权的zoo' @ error/constitute.c/WriteImage/1028. ./visit_zoo.py: line 3: syntax error near unexpected token(' ./visit_zoo.py:第3行:在dir(zoo)中断言“ hello”

1 个答案:

答案 0 :(得分:0)

您是否忘了像我一样指示脚本应由Python运行?

您可以在脚本文件的标题中包含python可执行文件:

#!/usr/bin/env python2

并使文件可执行或使用Python调用脚本:

$ python <filename>