从C中将函数指针传到python

从C中将函数指针传入python
C code:
void func(int a, int b){printf("%d%d", a, b);}

python code
def xxx(fp):
 fp(1,2)

想通过
Py_BuildValue 将函数指针传入python代码, 试过Py_BuildValue("(O&)",func);
还是不行.

请问大牛 应该怎么弄?

------解决方案--------------------
没弄过,应该得封装成一个对象返回吧
------解决方案--------------------
1. 一般来说你不能传一个普通的C函数。你自己的C函数要符合类似下面的接口:

static PyObject*
func(PyObject *self, PyObject *args)
{
    if(!PyArg_ParseTuple(args, ":numargs"))
        return NULL;
    return Py_BuildValue("i", numargs);
}

2. 如果你想重用现有的C代码,可以用上面的办法做一个简单的wrapper,或者使用ctypes。

------解决方案--------------------
引用:
谢谢你的信息
做出这个wrapper
然后怎么传递给py? Py_BuildValue("(O&)",func);

应该不用管咋啥函数指针啦,做wrapper时method table里应该已经用上函数指针啦,脚本里简单import模块调用就是,类似:

import ext_module

ext_module.func(1, 2)

等同

fp = ext_module.func
xxx(fp)
------解决方案--------------------
c部分没必要写在一起,一部分改成扩展方式不是容易实现嘛...
------解决方案--------------------
引用:
C部分个不是ext module,
是一个调用者

难道楼主想要在C里面调用python的函数?
如果仅仅是楼主给出的例子,没有必要使用什么函数指针,c里面包裹一下,编译后python里import一下,就可以在python里使用了。