Python ctypes addressof CFuncType

ctypes, python

Solution

`cast(f, c_void_p)` gets the correct address from within python

Problem

Related to my other question How can I get the address (acctual function pointer) to a CFuncType object? addressof() does not report the correct address. C code: ``` extern "C" _declspec(dllexport) int addr(int (*func)()) { int r = (int)func; return r; } ``` Python code: ``` def test(): return 42 t = CFUNCTYPE(c_int) f = t(test) print addressof(f) print dll.addr(f) ``` Output: ``` 7030864 3411932 ``` trying to call *(7030864) from C causes a crash, but calling *(3411932) works as expected. What's wrong with addressof()?

Original source

Related problems