将C++数组传递给Python

3
我想要将Python嵌入到我的C++代码中。在C++中,我构建了一个矩阵和向量,并希望使用Python的Numpy库来解决线性系统。为了实现这一目标,我正在按照这个例子进行操作: http://realgonegeek.blogspot.com/2013/08/how-to-pass-c-array-to-python-solution.html 然而,这一行代码:import_array();与我的代码不兼容。我得到了以下错误信息:
1678:144: error: return-statement with no value, in function returning 'int' [-fpermissive] #define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NUMPY_IMPORT_ARRAY_RETVAL; } }
有人成功地将Python代码嵌入到他们的C++代码中吗?或者知道为什么那一行代码可能不起作用。我正在使用Python 3.4。

1
你的链接明确表示它适用于Python 3.3。Python 3.3与Python 2.7非常不同。因此,代码无法正常工作并不令人意外。 - nneonneo
刚刚更新了,但仍然出现错误。 - user2785954
你解决了吗?我也遇到了同样的错误... - ochurlaud
1个回答

0

针对此问题的一个建议是: 如果您的矩阵、向量或数组是静态的,您可以像这样为c文件设置一个参数:

program.exe -array "[[2,2],[3,3],[4,4]]"

然后在c/c++中使用strtok或substr来分割字符串。

或者如果您的程序动态地使用了一个新的矩阵/向量/数组,您可以将其保存到临时文件或内存(C/C++)中。如果以上所有方法都不能解决问题,您可以最终重写C++语言的代码部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接