如果我理解得很好,您将没有偏好使用c => python或类似python =>
c进行对话。在那种情况下,我会推荐
Cython。它对多种操作都非常开放,特别是在您的情况下,调用从C用Python编写的函数。
这是它的工作方式(
publicapi):
以下示例假定您有一个Python类(
self是它的一个实例),并且该类具有
method要在该类上调用并处理C的结果(在此为a
double)的方法(名称)。 ,用编写,
Cython extension将有助于您进行此调用。
cdef public api double cy_call_func_double(object self, char* method, bint *error): if (hasattr(self, method)): error[0] = 0 return getattr(self, method)(); else: error[0] = 1
在C端,您将可以像下面这样执行调用:
PyObject *py_obj = .......if (py_obj) { int error; double result; result = cy_call_func_double(py_obj, (char*)"initSimulation", &error); cout << "Do something with the result : " << result << endl;}哪里
PyObject是
struct提供被Python
/ C API已经抓到后
py_obj(通过铸造常规的Python
object,在你用Cython扩展这样的:
<PyObject*>my_python_object),你将最终能够调用的
initSimulation方法就可以了,做什么用的结果。(这里
double,但用Cython可以很容易地处理与
vectors,
sets,…)
好吧,我知道,如果您从未使用过任何内容,那么我刚才写的内容可能会造成混淆
Cython,但这只是为了简短地展示它在 合并方面
可以为您做的许多事情。
另一方面,取决于算法的复杂性,与将Python代码重新编码为C相比,这种方法可能需要更多的时间。我认为,只有在您计划经常有这种需求时才花时间学习Cython。
希望这至少可以提供信息…



