使用 weave.inline 时出现分段错误

Segmentation fault when using weave.inline

本文关键字:分段 错误 weave inline 使用      更新时间:2023-10-16

我是将C++代码嵌入Python的新手。我正在测试weave.inline。但是,我在运行代码时遇到分段错误。有人可以告诉我我做错了什么吗?这是我的代码:

from scipy import weave
def cpp_call(np_points):
assert(type(np_points) == type(1))
code = """
double z[np_points+1][np_points+1];
for (int x = 0; x <= np_points; x++)
{
    for (int y = 0; y <= np_points; y++)
    {
        z[x][y] = x*y;
    }
}
"""
return weave.inline(code,'np_points')

我在这里看到两个问题:

1) 缩进 - 你的 Python 函数需要缩进到def行以上

2)你对weave.inline()的论点应该是一个列表。详情请看这里

因此,更正后的代码应如下所示:

from scipy import weave
def cpp_call(np_points):
  assert(type(np_points) == type(1))  
  code = """
  double z[np_points+1][np_points+1];
  for (int x = 0; x <= np_points; x++)
  {
    for (int y = 0; y <= np_points; y++)
    {
        z[x][y] = x*y;
    }
  }
  """ 
  return weave.inline(code,['np_points']) #Note the very important change here

这段代码对我来说运行良好。