Итак, моя проблема в том, что я не могу получить функцию из моего скрипта Python на моем скрипте c ++.
Я использую Python / C API, и моя IDE - VScode. Когда я запускаю код, он останавливается на определенной строке, вызывающей PyObject_GetAttrString ()
Эта строка в файле task.json из VScode используется для создания моего кода: g ++ -IC: / Users / Martin / AppData / Local/Programs/Python/Python37-32/libs/python37.a main.cpp -LC: / Users / Martin / AppData / Local / Программы / Python / Python37-32 / libs -lpython37
И эта строказапустите его:. \ a.exe (.exe, автоматически созданный VScode)
Впервые я пытаюсь использовать код Python через код C ++, подобный этому. Я уже искал в форумах и по другим темам на stackoverflow, но в конце концов я попробовал, я не понимаю. Вот код:
Код C ++: main.cpp (который я выполняю)
#include "C:/Users/Martin/AppData/Local/Programs/Python/Python37-32/include/Python.h"
using namespace std;
int main ()
{
cout << "Start \n";
Py_Initialize();
cout << "2\n"; PyObject* my_module = PyImport_ImportModule("mat");
cout << "3\n"; PyObject* my_function = PyObject_GetAttrString(my_module,"getfive");
cout << "4\n"; PyObject* my_result = PyObject_CallObject(my_function,NULL);
cout << "5\n"; double result = PyFloat_AsDouble(my_result);
cout << "6\n"; printf("My result is : %f",result);
cout << "7\n";
Py_Finalize();
return 0;
}
Код Python: mat.py
def getfive():
print "python say 5 !"
return 5
def speak():
print "speak"
Вывод i, кроме какесть:
Start 1
2
3
python say 5!
4
5
6
My result is : 5
7
Вывод, который у меня действительно есть:
Start 1
2
3
И здесь я не совсем понимаю, почему он не работает в этой строке: "PyObject * my_function = PyObject_GetAttrString (my_module, "говори"); "
Спасибо, что прочитали это далеко, и многое другое, если вы мне отвечаете!