从python传递到boost::python并返回到python的引用

2024-04-19 01:45:23 发布

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

我是python和boost::python的新手,请原谅我的无知。你知道吗

<>我的代码有一个Python C++交互,它是通过Boosi::Python完成的。 我正在将Python字典引用传递给C++:

C++代码:

boost::python::class_<ABC> ("ABC")

    .def("set_input",&ABC::set_input)
    ;

struct ABC {

boost::python::dict* signal_dictionary ;

 void insert_into_dict(int key,CellData cell_data) {

    if (!signal_dictionary->has_key(key) { 
       signal_dictionary->operator[](key)  = cell_data;
   }
 }

void set_input(boost::python::dict &signal_dict_t ) {
     signal_dictionary = &signal_dict_t;
}
我的想法是把Python DICT的地址传递给C++。在C++中填充数据。并在完成enitre填充后在python中访问它。 函数insert_into_dict被间歇调用,并填充dict中的数据。 但我得到以下错误: 属性错误:'Boost.Python.function函数“对象没有属性”\uem>包含\uem'

这来自:signal_dictionary->;has_key(key)。 看起来boost::python将signal\u字典读作boost::python::function,尽管它是boost::python::dict。 是否有任何方法可以将其类型转换为boost::python::dict。你知道吗

提前谢谢!!!你知道吗


Tags: key代码inputdatasignaldictionary字典cell