当函数接受非平凡的参数时,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
我理解他们在这个例子中的作用,基本上就是编写一个调用python的C函数。然而,所提供的示例在参数列表中只使用了一个double,这使得为python构建参数列表变得相当琐碎。
我有一个C++回调,它有以下签名:
Vector (*CALLBACK)(Simulation*, Vector, Vector, double, void*)
其中Vector和Simulation是我自己的类,void*表示持有PyObject(如示例中所用(的clientData
我知道SWIG同时封装Vector和Simulation类,因为我可以在python shell中创建它们。唯一的问题是,我不知道如何将回调函数中的Vector参数转换为python参数列表中合适的PyObject。SWIG在包装类本身时显然有一些方法可以做到这一点,但我不知道如何在函数中手动完成。
非常感谢您的帮助!-Chase
我不认为你的问题实际上是关于SWIG的;它纯粹是关于Python的。在这个级别上,您的问题只是从C调用Python,因此您需要研究Python文档中的"解析参数和构建值"。(也称为"扩展和嵌入Python解释器"。(
相关文章:
- 通过方法访问结构
- 通过递归进行因子分解
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 尝试通过多个向量访问变量时,向量下标超出范围
- C++如何通过用户输入删除列表元素
- 通过多个头文件使用常量变量
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何通过派生类函数更改基类中的向量
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- Ctypes wstring通过引用传递
- 变量没有改变?通过向量的函数调用
- 如何通过cpp程序运行shell脚本
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- QT通过C++添加映射QML项目
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- 如何通过 getter 函数删除矢量的元素?
- 通过继承类使用来自不同命名空间的运算符