python c语言 返回字符串,通过ctypes将字符串返回到Python的C方法

几年前,我不得不为一个C库创建一个python包装器。我对C的知识非常有限,但我设法创造了所需的东西。

突然有一个方法开始引起问题,我唯一的猜测是它与python更新有关。在

无论如何,我有以下C代码:const char * myFunction()

{

return "My String";

}

DLL_EXPORT const char*

test()

{

return myFunction();

}

在我的Python包装器中使用以下方法调用它:

^{pr2}$

如前所述,这是很好的工作,虽然我真的不知道为什么要给出我最近在试图修复它的发现。在

当前,我在调用test()方法时从python获取“Seg Fault”。在

使用此线程:

我设法修复了我的代码,现在看起来像这样,c:const char * myFunction()

{

return "My String";

}

DLL_EXPORT const char*

test()

{

const char* st = myFunction();

char *bar = _strdup(st);

return bar;

}

python代码保持不变。如前所述,我对C的了解非常有限,因此很少有问题:你知道为什么旧的实现在工作突然停止吗?是否有一些python更新会影响到它?在

为什么在我的c test()函数中必须执行strdup(st)和return bar而不是简单地返回st?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值