尝试在Python中嵌入一个Python函数。我在跟踪PyPy文档中的this guide。在
问题是,我找到的所有示例都是在int上操作的,我的函数接受一个字符串并返回一个字符串。我似乎不知道如何在C中嵌入这个函数,因为C似乎并没有真正的字符串,而是使用字符数组。在
以下是我尝试过的:# interface.py
import cffi
ffi = cffi.FFI()
ffi.cdef('''
struct API {
char (*generate_cool_page)(char url[]);
};
''')
...
@ffi.callback("char[] (char[])")
def generate_cool_page(url):
# do some processing with BS4
return str(soup)
def fill_api(ptr):
global api
api = ffi.cast("struct API*", ptr)
api.generate_cool_page = generate_cool_page
—
^{pr2}$
当我运行gcc -I/opt/pypy3/include -Wno-write-strings c_tests.c -L/opt/pypy3/bin -lpypy3-c -g -o c_tests然后运行./c_tests时,我得到以下错误:debug: OperationError:
debug: operror-type: CDefError
debug: operror-value: cannot render the type : it is a function type, not a pointer-to-function type
Error calling pypy_execute_source_ptr!
我对C没有太多的经验,我觉得我误传了字符串参数/返回值。我该怎么做?在
谢谢你的帮助!在