在C语言中调用Python代码,可以通过以下几种方式实现:
直接嵌入Python解释器
使用`Py_Initialize()`函数初始化Python解释器。
使用`PyRun_SimpleString()`或`PyRun_File()`函数运行Python代码。
使用`Py_Finalize()`函数结束Python解释器。
使用Python C扩展库
创建一个共享库,其中包含Python函数的C实现。
在C代码中加载共享库并调用Python函数。
通过系统命令调用Python程序
使用`system()`函数执行命令行命令,例如`python your_python_program.py`。
使用Python/C API
包含Python头文件`Python.h`。
初始化Python解释器`Py_Initialize()`。
导入Python模块`PyImport_ImportModule()`。
调用Python函数`PyObject_CallObject()`或`PyObject_GetAttrString()`。
处理Python函数返回值。

释放Python对象和解释器`Py_DECREF()`和`Py_Finalize()`。
环境配置
确保Python解释器的路径已添加到系统环境变量中,以便C程序能够找到Python解释器。
在Visual Studio中配置包含目录和库目录,添加Python安装路径下的`include`和`libs`文件夹。
确保Python版本和编译器版本结构一致。
示例代码
includeint main() {// 初始化Python解释器Py_Initialize();// 导入Python模块PyObject* pModule = PyImport_ImportModule("your_python_module_name");// 调用Python函数PyObject* pFunc = PyObject_GetAttrString(pModule, "your_python_function_name");PyObject* pArgs = PyTuple_Pack(2, PyLong_FromLong(1), PyLong_FromLong(2));PyObject* pValue = PyObject_CallObject(pFunc, pArgs);// 处理Python函数返回值long result = PyLong_AsLong(pValue);// 释放Python对象和解释器Py_DECREF(pArgs);Py_DECREF(pValue);Py_DECREF(pFunc);Py_DECREF(pModule);Py_Finalize();return 0;}
请根据你的具体需求选择合适的方法,并确保在编译和链接时包含正确的Python头文件和库文件。
