几年前,我不得不为一个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?在