繁体   English   中英

当 function 采用非平凡的 ZDBC11CAA5BDA27F77E6FB4DDABD 时,C++ 通过 SWIG 回调 python

[英]C++ callback with python through SWIG when the function takes non-trivial arguments?

我刚刚阅读了“SWIG 和 Python”教程的以下部分: http://www.swig.org/Doc1.1/HTML/Python.html#n11

我理解他们在示例中所做的事情,基本上你写一个 C function 调用 python。 但是,提供的示例在参数列表中只使用了一个 double,因此为 python 构建参数列表相当简单。

我有一个具有以下签名的 C++ 回调:

Vector (*CALLBACK)(Simulation*, Vector, Vector, double, void*)

其中 Vector 和 Simulation 是我自己的类,而 void* 用于持有 PyObject 的 clientData(如示例中所用)

我知道 SWIG 包装了 Vector 和 Simulation 类,因为我可以在 python shell 中创建它们。 唯一的问题是,我不知道如何将回调 function 中的 Vector 参数转换为 python 参数列表的适当 PyObject。 SWIG 在包装 class 本身时显然有一些方法可以做到这一点,但我不知道如何在 function 中手动完成它。

非常感谢任何帮助! -追赶

我认为您的问题实际上与 SWIG 无关。 它纯粹是关于 Python。 At this level, your problem is simply calling in to Python from C, so you need to study "Parsing arguments and building values" in the Python documentation. (还有“扩展和嵌入 Python 解释器” 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM