3

我不熟悉将 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')
4

1 回答 1

0

我在这里看到两个问题:

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

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

于 2013-01-24T14:40:06.477 回答