【发布时间】:2011-03-01 18:33:12
【问题描述】:
我有 CPython 函数:
void my_cfunc(int arg)
{
printf("Hello from C; arg=%d\n", arg);
}
PyObject *get_fptr(PyObject * /*self*/, PyObject * /*args*/)
{
return PyCObject_FromVoidPtr(my_cfunc, NULL);
}
然后,在 Python 中我有:
import mymodule
ptr = mymodule.get_fptr() # will return a PyCObject wrapping the C function pointer
然后:
from ctypes import *
SOMEFUNC_T = CFUNCTYPE(c_void, c_int)
somefunc = SOMEFUNC_T(ptr) # <-- bad!
现在,如果我将 get_fptr 更改为返回:PyLong_FromSize_t(size_t(my_cfunc)) 那么 'somefunc' 将是有效的。
但我不想将函数指针强制转换为 size_t。
请指教
【问题讨论】:
标签: python function pointers casting ctypes