Проблема с вызовом функций Python из C с использованием API Python C.Python

Программы на Python
Anonymous
Проблема с вызовом функций Python из C с использованием API Python C.

Сообщение Anonymous »

Я пытаюсь вызвать функции Python из программы C, используя API Python C. Однако я столкнулся с некоторыми проблемами и не получаю ожидаемых результатов. Ниже приведен код, который я использую:

Код: Выделить всё

// main.c
#include
#include 
#include  // Adding required inclusion for printf
int main() {
// Initialize the Python interpreter
Py_Initialize();

// Import the Python module that contains our functions
PyObject *pModule = PyImport_ImportModule("funcoes_python");

// Checks if the import was successful
if (pModule != NULL) {
// Gets the references to the functions we want to call
PyObject *pFuncSoma = PyObject_GetAttrString(pModule, "soma");
PyObject *pFuncSubtracao = PyObject_GetAttrString(pModule, "subtracao");

// Call the functions and print the results
if (pFuncSoma && PyCallable_Check(pFuncSoma)) {
PyObject *pArgs = PyTuple_Pack(2, PyLong_FromLong(10), PyLong_FromLong(5));
PyObject *pResult = PyObject_CallObject(pFuncSoma, pArgs);
long result = PyLong_AsLong(pResult);
printf("Soma: %ld\n", result);
Py_XDECREF(pArgs);
Py_XDECREF(pResult);
}

if (pFuncSubtracao && PyCallable_Check(pFuncSubtracao)) {
PyObject *pArgs = PyTuple_Pack(2, PyLong_FromLong(10), PyLong_FromLong(5));
PyObject *pResult = PyObject_CallObject(pFuncSubtracao, pArgs);
long result = PyLong_AsLong(pResult);
printf("Subtracao: %ld\n", result);
Py_XDECREF(pArgs);
Py_XDECREF(pResult);
}

// Release references
Py_XDECREF(pFuncSoma);
Py_XDECREF(pFuncSubtracao);
} else {
PyErr_Print();

}

// End the Python interpreter
Py_Finalize();

return 0;
}

Код на Python:

Код: Выделить всё

# funcoes_python.py

def soma(a, b):
return a + b

def subtracao(a, b):
return a - b
Я ожидал, что этот код вызовет функции Python «сложение» и «вычитание» и распечатает результаты. Однако я не получаю ожидаемых результатов. Вместо этого я получаю.

Код: Выделить всё

g++ main.c -o output -L C:/Python312/libs -lpython3 -I C:/Python312/include
.\output.exe
он ​​создает файл output.exe, но не отображает никаких результатов в терминале.
Это должно быть напечатано:

Код: Выделить всё

Sum: 15
Subtraction: 5
Может ли кто-нибудь помочь мне определить, что не так в этом коде и как это исправить, чтобы получить ожидаемые результаты?
Конфигурация:
  • Python 3.12
  • Windows 10 SO
Я уже пробовал Python 64/32 бит.

Подробнее здесь: https://stackoverflow.com/questions/784 ... thon-c-api

Вернуться в «Python»