Victor Sergienko
Victor Sergienko

Reputation: 13495

CFFI - Is Python callback for C code possible in ABI mode?

I need a provide a callback for C code. Basically, I need this to work:

In C:

typedef int callback_t(int i);
callback_t *callback = NULL;

in Python:

from cffi import FFI

def py_callback(i):
    return 0

ffi_builder = FFI()
lib = ffi_builder.dlopen('foobar.so')
lib.callback = py_callback

Adding @ffi_builder.def_extern() to py_callback throws an exception: ffi.def_extern() is only available on API-mode FFI objects.

So is it possible in ABI mode at all?

Upvotes: 3

Views: 1922

Answers (1)

Armin Rigo
Armin Rigo

Reputation: 13000

Yes, you need old-style callbacks.

Upvotes: 1

Related Questions