在C中嵌入Python:无法读取python返回整数值

时间:2015-03-26 02:21:36

标签: python c embed cross-language

我正在尝试在我的C代码中嵌入python。所以目标是我想在C程序中运行一个python代码,当python代码完成运行时,它应该将一个整数值返回给我的C程序。

在我的python代码" try.py"中,我在python文件的末尾指定return 10

但是,我尝试了以下操作,但返回值始终为0。为什么呢?

#include <Python.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{    int sys;
     Py_Initialize();
     PyObject* PyFileObject = PyFile_FromString("try.py", "r");
     sys=PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "try.py", 1);
     Py_Finalize();
     printf("\n\n the return value is %d\n\n",sys);
     return 0;
}

1 个答案:

答案 0 :(得分:0)

PyRun_SimpleFileEx成功时返回0,错误时返回-1

这是从here

中提取的
  

int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)

     

根据flags参数从 main 模块中的命令执行Python源代码。如果 main 尚不存在,则会创建它。成功时返回0,如果引发异常则返回-1。如果出现错误,则无法获取异常信息。有关标志的含义,请参见下文。

     

请注意,如果引发了另外未处理的SystemExit,则此函数不会返回-1,但只要未设置Py_InspectFlag,就退出该进程。