You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
733 B
34 lines
733 B
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,))
|