Передача аргумента функции вызова функции API Python C

Я пытаюсь вызвать функцию python из C ++. Однако я не мог понять, как передать аргумент функции вызова функции python.

У меня есть файл python с именем «arbName.py» и файл c ++ с именем «main.cpp».

arbName.py

def someFunction(a):
    return a

arbName.py

#include <Python.h>
int main()
{
    Py_Initialize();
    //add . to path
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append(\".\")");

    PyObject* myModuleString = PyUnicode_FromString((char*)"arbName");
    PyObject* myModule = PyImport_Import(myModuleString);
    PyObject* myFunction = PyObject_GetAttrString(myModule,(char*)"someFunction");

    //couldn't figure out this part. 
    //How to declare a python variable and/or pass it to the python function.
    PyObject* args = PyUnicode_FromString("1");
    PyObject *myResult = PyObject_CallFunctionObjArgs(myFunction, args);
    return 0;
}

EDIT: Я смог сделать это, изменив последние две строки с помощью

PyObject* args = Py_BuildValue("(d)", 2.0);
PyObject *myResult = PyObject_CallObject(myFunction, args);
1
задан 13 August 2018 в 14:32

0 ответов

Другие вопросы по тегам:

Похожие вопросы: