Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cython:让python创建由C++; 我有一个C++层,通过UDP接收消息,并将这些消息解码成C结构。我想将此消息信息传递到此消息层顶部的应用程序层。应用层用Python编写,我们使用Cython来在Python和C++之间进行桥接。 基本思想是让Python注册回调函数: 为C结构创建存储区域。由于Python将在其应用程序中使用C-struct,我们希望让应用程序层负责创建实际内存。当C++层调用这个回调函数时,它应该返回指针到C结构的存储区域。 向Python应用程序发出信号,表明C-struct(在函数1中创建)的存储区域已填充所接收消息的数据_Python_C++_Pointers_Cython - Fatal编程技术网

Cython:让python创建由C++; 我有一个C++层,通过UDP接收消息,并将这些消息解码成C结构。我想将此消息信息传递到此消息层顶部的应用程序层。应用层用Python编写,我们使用Cython来在Python和C++之间进行桥接。 基本思想是让Python注册回调函数: 为C结构创建存储区域。由于Python将在其应用程序中使用C-struct,我们希望让应用程序层负责创建实际内存。当C++层调用这个回调函数时,它应该返回指针到C结构的存储区域。 向Python应用程序发出信号,表明C-struct(在函数1中创建)的存储区域已填充所接收消息的数据

Cython:让python创建由C++; 我有一个C++层,通过UDP接收消息,并将这些消息解码成C结构。我想将此消息信息传递到此消息层顶部的应用程序层。应用层用Python编写,我们使用Cython来在Python和C++之间进行桥接。 基本思想是让Python注册回调函数: 为C结构创建存储区域。由于Python将在其应用程序中使用C-struct,我们希望让应用程序层负责创建实际内存。当C++层调用这个回调函数时,它应该返回指针到C结构的存储区域。 向Python应用程序发出信号,表明C-struct(在函数1中创建)的存储区域已填充所接收消息的数据,python,c++,pointers,cython,Python,C++,Pointers,Cython,我正在努力解决的问题是: 如何返回由Python创建的C结构的指针,正确地指向C++层? 我是否应该在接收指针时调用Py_IncRef,在向python发送信号时调用指针上的Py_DecRef,指针的存储区域现在充满了数据 < C++ >和Cython之间交换数据时,我会把数据整理成一个现有的概念证明,比如NUMPY。 请看这个讨论。 特别要注意: 或者我会使用一个标准化的框架在共享内存中进行语言间的通信(尽管这确实会浪费一些时间进行序列化和反序列化) 在这种情况下,我可能会使用protob

我正在努力解决的问题是:

如何返回由Python创建的C结构的指针,正确地指向C++层?
  • 我是否应该在接收指针时调用Py_IncRef,在向python发送信号时调用指针上的Py_DecRef,指针的存储区域现在充满了数据

  • < C++ >和Cython之间交换数据时,我会把数据整理成一个现有的概念证明,比如NUMPY。 请看这个讨论。

    特别要注意:

    或者我会使用一个标准化的框架在共享内存中进行语言间的通信(尽管这确实会浪费一些时间进行序列化和反序列化) 在这种情况下,我可能会使用protobuf(谷歌代码)或类似的代码。

    我不愿意发布完整的答案(因为这两个问题都很复杂,我不确定你想要什么)。有几点:1)要从C/C++调用的回调函数非常棘手(如果你想使用Python函数,我认为它们可以使用纯Cython函数);2) 在Python/Cython中分配内存是很容易的——遵循这个例子;3)在C++中,你不想调用<代码> PyInC/DeffF,但是你确实想考虑包装对象的生存期。