在c语言如何返回一个字符串,如何使用cffi嵌入一个用C语言返回字符串的Python函数?...

尝试在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没有太多的经验,我觉得我误传了字符串参数/返回值。我该怎么做?在

谢谢你的帮助!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值