C++ 来自内置类型的python转换器

C++ 来自内置类型的python转换器,c++,python,boost-python,C++,Python,Boost Python,对于内置类型,例如从PyLong\u-Type到double,boost-python在哪里从python转换器注册 我想定义一个转换器,它可以从Python中获得一个代码< NoMy.FulAT128 < /代码>,并返回C++中的函数< 长双< /代码>。我已经用另一种方法完成了,即to_python转换器。为此,我调整了builtin\u converters.hpp,但我没有找到boost python是如何进行from-python转换的。实际上,from-python转换是在buil

对于内置类型,例如从
PyLong\u-Type
double
,boost-python在哪里从python转换器注册


我想定义一个转换器,它可以从Python中获得一个代码< NoMy.FulAT128 < /代码>,并返回C++中的函数< <代码>长双< /代码>。我已经用另一种方法完成了,即to_python转换器。为此,我调整了

builtin\u converters.hpp
,但我没有找到boost python是如何进行from-python转换的。

实际上,from-python转换是在
builtin\u converters.cpp
中完成的,而不是在库的头部分。我复制了此文件并删除了除长双精度转换器之外的所有内容,然后我可以对其进行修改。

我将添加到此答案中,不过问题稍有不同:

如何将Python类型的对象(即
PyTypeObject
,例如
PyLong\u-type
PyBool\u-type
PyUnicode\u-type
等)转换为
boost::Python::object

这似乎很管用:

namespace bp = boost::python;

bp::object float_Type = bp::borrowed(
                            bp::downcast<PyTypeObject>(&PyFloat_Type))));
namespace-bp=boost::python;
bp::对象浮动类型=bp::借用(
bp::下行(&PyFloat_-Type));
结果是,您可以通过boostpython对象向Python公开实际的类型对象