3
与我other question的Python ctypes的addressof CFUNCTYPE
如何,我可以得到的地址(acctual函数指针)到CFUNCTYPE对象? addressof()不报告正确的地址。
C代码:
extern "C" _declspec(dllexport)
int addr(int (*func)())
{
int r = (int)func;
return r;
}
Python代码:
def test():
return 42
t = CFUNCTYPE(c_int)
f = t(test)
print addressof(f)
print dll.addr(f)
输出:
7030864
3411932
试图调用*(7030864)由C会导致系统崩溃,但调用*( 3411932)按预期工作。 addressof()有什么问题?
'CFUNCTYPE'已经是一个指针,所以'addressof()'返回,其中该指针存储,而不是函数地址的地址。 – 2010-01-11 04:51:31