将C++数组传递给Python

3 投票
1 回答
690 浏览
提问于 2025-04-18 09:14

我想把Python嵌入到我的C++代码中。在C++里,我正在构建一个矩阵和一个向量,并希望使用Python的Numpy来解决线性方程组。为了实现这个目标,我在参考这个例子:http://realgonegeek.blogspot.com/2013/08/how-to-pass-c-array-to-python-solution.html

不过,我的代码中这个特定的行: import_array ();
却无法正常工作。我遇到了以下错误:

1678:144: 错误:返回语句没有值,在返回'int'的函数中 [-fpermissive] #define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray 导入失败"); return NUMPY_IMPORT_ARRAY_RETVAL; } }

有没有人成功地把Python代码嵌入到他们的C++代码中?或者知道为什么那一行可能不工作。我正在使用Python 3.4。

1 个回答

0

这里有一个建议:

如果你的矩阵、向量或者数组是静态的(也就是在程序运行前就已经确定了),你可以在运行程序的时候给它传一个参数,像这样:

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

然后在C或C++中可以用strtok或者substr来分割这个字符串。

如果你的程序是动态生成矩阵、向量或者数组的,你可以把它们保存到一个临时文件或者内存中(在C/C++里)。如果以上方法都不能解决你的问题,最后你可能需要把那部分代码用C++重新写一遍。

撰写回答