-1
我有一个用swig包装的C文件。这个C文件包含一个带有函数指针作为参数的API(如下所示)。ctypes和swig for python之间的互操作性
example.c
int binary_op (int a, int b, int (*op)(int,int))
{
return (*op)(a,b);
}
我可以映射到指针参数的函数提供的映射函数在同一文件中使用痛饮定义。但映射函数是在另一个用Ctypes包装的C文件中定义的。
testing.c
int add_int(int a, int b){
return a+b;
}
在Python,我输入痛饮生成模块和被称为API与ctypes的生成的映射函数,它导致错误。
在testfile.py
import example # Module generated by swig
from ctypes import *
wrap_dll = CDLL('testing.dll') # testing.dll is generated with File_2.c
# Mapping function 'add_int' to argument in 'binary_op'
example.binary_op(3,4,wrap_dll.add_int)
误差示出参数的类型不匹配。
TypeError: in method 'binary_op', argument 3 of type 'int (*)(int,int)'
我们有一个错误,没有代码,也没有问题。 [mcve]三分之一,请尽量做得更好。 – Anthon
在这里搜索回调,SWIG和Python,你会发现你可以使用的东西。它在那里 –
@JensMunk:我已经搜索了很多,但没有任何关系。任何帮助将不胜感激,如果你能指导我相关的东西。谢谢 –