在C中调用从Python接收函数指针的函数
我正在使用Swig从C源代码生成一个python库。 有一个函数接收指向C语言中函数的指针。我需要从Python调用它,但回调函数必须是Python语言。 我看到的所有文档都使用C中的回调函数 例如:在C中调用从Python接收函数指针的函数,python,c,swig,Python,C,Swig,我正在使用Swig从C源代码生成一个python库。 有一个函数接收指向C语言中函数的指针。我需要从Python调用它,但回调函数必须是Python语言。 我看到的所有文档都使用C中的回调函数 例如: typedef double (*FeeCalculator)(Transaction* p); void dealTransaction(Transaction* t, FeeCalculator feeCalculator); 我希望该函数在Python中可用。比如: def myFeeC
typedef double (*FeeCalculator)(Transaction* p);
void dealTransaction(Transaction* t, FeeCalculator feeCalculator);
我希望该函数在Python中可用。比如:
def myFeeCalculator(tran):
return trans.Sum * 0.1
def main():
t = Transaction()
dealTransaction(t, myFeeCalculator)
谢谢柔印。
这就是我所做的:
这就是我最后做的:
Swig:
C:
来自Python的调用:
import myLib
def myFeeCalculator(tran):
return trans.Sum * 0.1
def main():
t = Transaction()
myLib.dealTransaction(t, myFeeCalculator)
你能提供一个吗?谢谢,我增加了一个例子。即使大多数代码是用C编写的,你能只为Python包装写一些C++吗?胶水可以稍微简化一点C++。
void dealTransaction(Transaction* t, FeeCalculatorCallbackAndContext* feeCalculator){
feeCalculator->callback(t, feeCalculator->context);
}
import myLib
def myFeeCalculator(tran):
return trans.Sum * 0.1
def main():
t = Transaction()
myLib.dealTransaction(t, myFeeCalculator)