Python ctypes адрес CFuncType - PullRequest
       13

Python ctypes адрес CFuncType

3 голосов
/ 11 января 2010

Относится к моему другому вопросу

Как я могу получить адрес (действительный указатель на функцию) для объекта 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 ()?

1 Ответ

6 голосов
/ 11 января 2010

cast(f, c_void_p) получает правильный адрес из питона

...