«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Вызовите функцию Python из C/C ++ и получите метод возвращаемого значения

Вызовите функцию Python из C/C ++ и получите метод возвращаемого значения

Опубликовано в 2025-04-18
Просматривать:597

How to Extract a Python Function\'s Return Value When Called from C/C  ?

Извлечение возвращаемого значения из функции Python, вызванной в C/c

вызов функции Python из C/C позволяет расширять функциональность, но извлечение возвращаемого значения может быть сложной. Вот решение с использованием Python C-API.

модуль Python

создать модуль Python (myTest.py):

import math

def myabs(x):
    return math.fabs(x)

Code C/c

импортировать интерпретатор Python3 в c/c (test.cpp):

#include 

int main() {
    Py_Initialize();
    PyRun_SimpleString("import sys; sys.path.append('.')");

импорт и вызов функции

]
получить ссылку на функцию:
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
    pyobject* myfunction = pyobject_getattring (mymodule, "myabs"); Аргументы:
pyobject* args = pytuple_pack (1, pyfloat_fromDouble (2.0));
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
    call Функция:
pyObject* myResult = pyobject_callion (&&? args);
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
    извлечение возвращаемого значения
преобразовать результат в Double:
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
double result = pyfloat_asdouble (myresult); Теперь используйте извлеченное возвращаемое значение (result):

printf ("Абсолютное значение: %f \ n", result);

примечание:

не забудьте проверить любые ошибки во время этих операций. Для получения более подробной информации о C-API см. В официальной документации.
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3