我正在使用Python C / API编写一个小程序,该程序基本上调用了一个简单的Python脚本。这是代码:
#include <Python.h>
PyObject *pName, *pModule, *pDict, *pFunc;
int main() {
Py_Initialize();
pName = PyString_FromString("simplemodule");
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
pFunc = PyDict_GetItemString(pDict, "simplefunction");
if(PyCallable_Check(pFunc)) {
PyObject_CallObject(pFunc, NULL);
} else {
PyErr_Print();
}
Py_DECREF(pName);
Py_DECREF(pModule);
Py_Finalize();
return 0;
}
现在,这是simplemodule.py的代码:
def simplefunction():
m = 5*5
return m
我的问题是:如何将变量m分配给C++变量,以便可以在C++中使用它?
最佳答案
使用 PyInt_AsLong
将返回值转换为C long。
...
if (PyCallable_Check(pFunc)) {
PyObject *res = PyObject_CallObject(pFunc, NULL);
if (res != NULL) {
long n = PyInt_AsLong(res); // <---------
cout << n << endl;
} else {
PyErr_Print();
}
...