我很好奇让 C++ 和 Python 相互对话最灵活、最高效、最无缝的方法是什么。
竞争者似乎是 Pybind11、Boost.Python,或者两者都不是(只需编写如下函数和包装器)。
using namespace boost::algorithm;
static PyObject* strtest(PyObject* self, PyObject* args)
{
std::string s = "Boost C++ Libraries";
to_upper(s);
PyObject * python_val = Py_BuildValue("s", s.c_str());
return python_val;
}
PyMODINIT_FUNC initmath_demo(void)
{
static PyMethodDef methods[] = {
"Test boost libraries" },
{ NULL, NULL, 0, NULL }
};
PyObject *m = Py_InitModule("math_demo", methods);
}
我推荐 PyBind11。我将它用于类似的用例,其中 Python 模块调用 C++ 来执行成本更高且性能要求较高的操作。 Boost Python 是一个更丰富的库,但具有大小成本,而 PyBind11 仅是头文件,并且它支持 STL,这使得无需编写任何代码即可轻松传递基本数据结构!如果您可以将调用包装到基本 C 函数和原始数据类型,那么 Cpython 将是最好的!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)