Python解析在c语言中的嵌入
我试图在C代码中嵌入两个python函数。我的问题是,我无法在C中将None py对象解析为NULL 我在其中创建了一个“check.py”文件:Python解析在c语言中的嵌入,python,c,parsing,embedding,Python,C,Parsing,Embedding,我试图在C代码中嵌入两个python函数。我的问题是,我无法在C中将None py对象解析为NULL 我在其中创建了一个“check.py”文件: def integer(s): a = input(s) try: a = int(a) return a except ValueError: print("Invalid input\n") return #NULL def floating(s):
def integer(s):
a = input(s)
try:
a = int(a)
return a
except ValueError:
print("Invalid input\n")
return #NULL
def floating(s):
a = input(s)
try:
a = float(a)
return a
except ValueError:
print("Invalid input\n")
return #NULL
下面是C代码:
#include <Python.h>
int inputInt() {
PyObject *strret, *mymod, *strfunc, *strargs;
int result;
Py_Initialize();
PyRun_SimpleString("import sys; sys.path.insert(0, '.')");
mymod = PyImport_ImportModule("prova");
strfunc = PyObject_GetAttrString(mymod, "integer");
strargs = Py_BuildValue("(s)", "Insert an integer value: ");
strret = PyEval_CallObject(strfunc, strargs);
//next line is the problem (can't parse None py object to NULL)
PyArg_Parse(strret, "l", &result);
return result;
}
double inputDouble() {
PyObject *strret, *mymod, *strfunc, *strargs;
double result;
Py_Initialize();
PyRun_SimpleString("import sys; sys.path.insert(0, '.')");
mymod = PyImport_ImportModule("prova");
strfunc = PyObject_GetAttrString(mymod, "floating");
strargs = Py_BuildValue("(s)", "Insert a floating point value: ");
strret = PyEval_CallObject(strfunc, strargs);
//next line is the problem (can't parse None py object to NULL)
PyArg_Parse(strret, "d", &result);
return result;
}
int main(int argc, char** argv) {
long a = inputInt();
printf("%ld\n", a);
double b = inputDouble();
printf("%.3f\n", b);
return 0;
}
#包括
int输入(){
PyObject*strret、*mymod、*strfunc、*strargs;
int结果;
Py_初始化();
PyRun_SimpleString(“导入系统;系统路径插入(0,”)”;
mymod=PyImport_ImportModule(“prova”);
strfunc=PyObject_GetAttrString(mymod,“整数”);
strargs=Py_BuildValue(“(s)”,“插入整数值:”;
strret=PyEval_CallObject(strfunc,strargs);
//下一行是问题(无法将None py对象解析为NULL)
PyArg_解析(stret,“l”和result);
返回结果;
}
双输入双(){
PyObject*strret、*mymod、*strfunc、*strargs;
双重结果;
Py_初始化();
PyRun_SimpleString(“导入系统;系统路径插入(0,”)”;
mymod=PyImport_ImportModule(“prova”);
strfunc=PyObject_GetAttrString(mymod,“floating”);
strargs=Py_BuildValue(“(s)”,“插入浮点值:”;
strret=PyEval_CallObject(strfunc,strargs);
//下一行是问题(无法将None py对象解析为NULL)
PyArg_解析(stret,“d”和result);
返回结果;
}
int main(int argc,字符**argv){
长a=输入();
printf(“%ld\n”,a);
双b=输入双();
printf(“%.3f\n”,b);
返回0;
}
程序编译正确,但如何在C中将None对象实现为NULL?您是否检查了
stret
是否不正确?