Введение
Я пытаюсь сделать простую вещь - теоретически, но пока не на практике.У меня есть консольное приложение C ++, со встроенным скриптом Python.Он должен передать некоторые переменные в python, выполнить вычисления и отправить его обратно.
Пример кода
мой файл cpp выглядит следующим образом (на основе THIS ответ):
#include <iostream>
#include <boost/python.hpp>
using namespace boost::python;
int main()
{
int a = 2;
int b = 3;
Py_Initialize();
try
{
object module = import("__main__");
object name_space = module.attr("__dict__");
exec_file("Script.py", name_space, name_space);
object MyFunc = name_space["MyFunc"];
object result = MyFunc(a,b);
int sum = extract<int>(result["sum"]);
std::cout << sum;
}
catch (error_already_set)
{
PyErr_Print();
}
Py_Finalize();
}
Мой файл Script.py очень прост
def MyFunc(a,b):
result = a+b
return result
Проблема
Я ожидал, чтоPython примет две переменные, суммирует их и позволяет извлечь их обратно, чтобы сделать мой C ++.Затем C ++ распечатывает результаты.Однако это заканчивается следующей ошибкой:
TypeError: 'int' object has no attribute '__getitem__'
Я думаю, что MyFunc (a, b) - неправильный вызов, однако я не могу понять, почему.Должен ли я передавать переменные другим способом?Если да, пожалуйста, объясните мне, как это сделать.