| import cffi |
| |
| ffi = cffi.FFI() |
| |
| ffi.embedding_api(""" |
| int (*my_callback)(int); |
| int add_rec(int, int); |
| """) |
| |
| ffi.embedding_init_code(r""" |
| from _add_recursive_cffi import ffi, lib |
| import sys |
| print("preparing REC") |
| sys.stdout.flush() |
| |
| @ffi.def_extern() |
| def add_rec(x, y): |
| print("adding %d and %d" % (x, y)) |
| sys.stdout.flush() |
| return x + y |
| |
| x = lib.my_callback(400) |
| print('<<< %d >>>' % (x,)) |
| """) |
| |
| ffi.set_source("_add_recursive_cffi", """ |
| /* use CFFI_DLLEXPORT: on windows, it expands to __declspec(dllexport), |
| which is needed to export a variable from a dll */ |
| CFFI_DLLEXPORT int (*my_callback)(int); |
| """) |
| |
| fn = ffi.compile(verbose=True) |
| print('FILENAME: %s' % (fn,)) |