我刚刚阅读了“SWIG和Python”教程的以下部分: http://www.swig.org/Doc1.1/HTML/Python.html#n11
我理解他们在示例中做了什么,基本上你编写了一个调用python的C函数。但是,提供的示例在参数列表中仅占用了两倍,因此为python构建参数列表非常简单。
我有一个具有以下签名的C ++回调:
Vector (*CALLBACK)(Simulation*, Vector, Vector, double, void*)
其中Vector和Simulation是我自己的类,void *用于持有PyObject的clientData(在示例中使用)
我知道SWIG包装了Vector和Simulation类,因为我可以在python shell中创建它们。唯一的问题是,我不知道如何将回调函数中的Vector参数转换为python参数列表的适当PyObject。当它包装类本身时,SWIG显然有一些方法可以做到这一点,但我不知道如何在函数中手动完成它。
任何帮助非常感谢! -Chase
答案 0 :(得分:0)
我认为你的问题实际上并不是关于SWIG的;它纯粹是关于Python的。在这个级别,你的问题只是从C调用Python,所以你需要在Python文档中学习"Parsing arguments and building values"。 (还有"Extending and Embedding the Python interpreter"。)