#include <Python.h>
#include <iostream>
int main() {
// 初始化 Python 解释器
Py_Initialize();
// 检查 Python 解释器是否初始化成功
if (!Py_IsInitialized()) {
std::cerr << "Failed to initialize Python interpreter" << std::endl;
return 1;
}
// 创建 Python 字符串对象
PyObject* pName = PyUnicode_FromString("my_script");
PyObject* pModule = NULL;
// 加载 Python 脚本文件
pModule = PyImport_Import(pName);
// 检查模块是否加载成功
if (pModule != NULL) {
// 获取 Python 函数对象
PyObject* pFunc = PyObject_GetAttrString(pModule, "my_function");
// 检查函数是否存在且可调用
if (pFunc && PyCallable_Check(pFunc)) {
// 调用 Python 函数并获取返回值
PyObject* pValue = PyObject_CallObject(pFunc, NULL);
if (pValue != NULL) {
// 处理返回值(这里假设返回值是整数)
long result = PyLong_AsLong(pValue);
std::cout << "Result of my_function: " << result << std::endl;
Py_DECREF(pValue);
} else {
PyErr_Print();
}
Py_DECREF(pFunc);
} else {
if (PyErr_Occurred())
PyErr_Print();
}
Py_XDECREF(pFunc);
Py_DECREF(pModule);
} else {
PyErr_Print();
}
Py_DECREF(pName);
// 关闭 Python 解释器
Py_Finalize();
return 0;
}
初始化 Python 解释器:
Py_Initialize() 初始化 Python 解释器,确保可以在 C++ 程序中使用 Python。加载 Python 脚本文件:
PyImport_Import() 加载 Python 脚本文件。pName 是 Python 文件的名称(不带 .py 扩展名)。获取 Python 函数对象:
PyObject_GetAttrString() 获取 Python 文件中的指定函数对象(例如 my_function)。检查函数是否可调用:
PyCallable_Check() 检查获取到的对象是否是一个可调用的函数。调用 Python 函数:
PyObject_CallObject() 调用 Python 函数,并传递参数(如果有的话)。这里假设没有参数传递。处理返回值:
PyLong_AsLong() 将返回值转换为 C++ 的 long 类型,并输出结果。错误处理:
PyErr_Print() 打印错误信息。释放资源:
Py_DECREF() 和 Py_XDECREF() 释放不再需要的 Python 对象,以避免内存泄漏。关闭 Python 解释器:
Py_Finalize() 关闭 Python 解释器,结束 Python 运行时环境。这个示例展示了如何从 C++ 中调用 Python 函数,并处理其返回值。请确保 Python 库已正确安装并在编译时链接了 Python 库。
上一篇:python 类型转换
下一篇:python怎么使用
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站