def get_decls(ffi): decls = {} for name, decl in ffi._parser._declarations.items(): if name.startswith('function '): name = name.split(' ', 1)[1] sig = decl[0].c_name_with_marker.replace('&', '', 1) decls[name] = sig return decls def dlopen(ffi, decls): lib = object() for name, sig in decls.items(): addr = dlsym(name) if addr: setattr(lib, name, cast(sig, addr)) return lib dlopen(ffi, get_decls(ffi))