文章目录
由于本人不懂C++,但在跑ORB-SLAM2又必须用到,在此过程中,被各种C++问题折磨得欲仙欲死,其中就包括在C++中动态调用Python代码。
以下代码是在C++中初始化Python解释器并导入numpy库:
#include <iostream>
#include <Python.h>
#include <numpy/arrayobject.h> //numpy的头文件
using namespace std;
void call_py();
int main() {
call_py();
cout << "Hello world!" << endl;
return 0;
}
void call_py() {
Py_Initialize();
if (!Py_IsInitialized()) {
cout << "python initialization failed!" << endl;
return;
}
import_array();
Py_Finalize();
}
但编译会报以下错:

我的解决方法比较简单:将import_array();单独放在一个有返回值的函数当中即可,所有代码如下:
#include <iostream>
#include <Python.h>
#include <numpy/arrayobject.h> //numpy的头文件
using namespace std;
void call_py();
int call_numpy();
int main() {
call_py();
cout << "Hello world" << endl;
return 0;
}
int call_numpy() {
import_array();
}
void call_py() {
Py_Initialize();
if (!Py_IsInitialized()) {
cout << "python initialization failed!" << endl;
return;
}
if (call_numpy() < 0) {
cout << "numpy initialization failed!" << endl;
Py_Finalize(); // 清理Python解释器
return;
}
Py_Finalize();
}
1280

被折叠的 条评论
为什么被折叠?



