#include <Python.h>
int main(int argc, char *argv[]) {
// 初始化Python解释器
Py_Initialize();
// 检查Python解释器是否初始化成功
if (!Py_IsInitialized()) {
fprintf(stderr, "Failed to initialize Python interpreter\n");
return 1;
}
// 执行Python代码
PyRun_SimpleString("print('Hello from Python!')");
// 调用Python函数
PyObject *pName = PyUnicode_DecodeFSDefault("my_module"); // 加载模块名称
PyObject *pModule = PyImport_Import(pName); // 导入模块
Py_DECREF(pName);
if (pModule != NULL) {
PyObject *pFunc = PyObject_GetAttrString(pModule, "my_function"); // 获取函数
if (pFunc && PyCallable_Check(pFunc)) {
PyObject *pArgs = PyTuple_Pack(1, PyLong_FromLong(42)); // 准备参数
PyObject *pValue = PyObject_CallObject(pFunc, pArgs); // 调用函数
if (pValue != NULL) {
printf("Result of call: %ld\n", PyLong_AsLong(pValue)); // 输出结果
Py_DECREF(pValue);
} else {
PyErr_Print();
}
Py_DECREF(pArgs);
Py_DECREF(pFunc);
} else {
if (PyErr_Occurred())
PyErr_Print();
}
Py_XDECREF(pFunc);
Py_DECREF(pModule);
} else {
PyErr_Print();
fprintf(stderr, "Failed to load \"my_module\"\n");
return 1;
}
// 关闭Python解释器
Py_Finalize();
return 0;
}
初始化Python解释器:
Py_Initialize()
来初始化Python解释器。执行Python代码:
PyRun_SimpleString
来执行简单的Python代码字符串。这里我们打印了一条消息。调用Python函数:
PyUnicode_DecodeFSDefault
和 PyImport_Import
来加载一个Python模块(例如 my_module
)。PyObject_GetAttrString
来获取模块中的一个函数(例如 my_function
)。PyObject_CallObject
来调用它,传递适当的参数。错误处理:
PyErr_Print()
来打印Python错误信息。清理资源:
Py_DECREF
来释放不再需要的Python对象。Py_Finalize()
来关闭Python解释器。这个示例展示了如何在C语言中嵌入Python解释器,并调用Python函数。你需要确保编译时链接了Python库,并且有相应的Python模块和函数可以调用。
上一篇:c++ 调用python脚本
下一篇:python弹窗代码
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站