如果你想在 C++ 和 Python 之间工作,那么Boost Python就是你要找的。您可以为 Cython 手动编写 C Python 绑定,但这在许多方面限制了您编写代码的方式。这是最简单的方法,如本教程的一些片段所示:
一个执行 hello world 的简单函数:
char const* greet()
{
return "hello, world";
}
将其公开给 python 所需的 Boost python 代码:
#include <boost/python.hpp>
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
如何在 python 中使用此代码:
>>> import hello_ext
>>> print hello.greet()
hello, world
朝相反的方向前进有点困难,因为 python 不会编译为本机代码。您必须将 python 解释器嵌入到您的 C++ 应用程序中,但执行此操作所需的工作记录在此处。这是一个调用 python 解释器并提取结果的示例(python 解释器定义了在 C++ 中使用的对象类):
object result = eval("5 ** 2");
int five_squared = extract<int>(result);