Python C / API назначает переменную C ++

Я пишу небольшую программу с 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

У меня вопрос: как я могу назначить переменную м к переменной C ++, чтобы я мог использовать его в C ++?

1

Решение

использование 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();
}
...
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]