C 语言调用 Python 代码
在 C 语言中使用某个 Python 函数
#include <Python.h>
#include <stdlib.h>
int main(int argc, char**argv)
{
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\"./\")");
PyObject *pName = PyUnicode_DecodeFSDefault("multiply");
PyObject *pModule = PyImport_Import(pName);
if(!pModule){
fprintf(stderr, "cannot find module");
return -1;
}
PyObject *pFunc = PyObject_GetAttrString(pModule, "multiply");
Py_DECREF(pModule);
if(!pFunc){
fprintf(stderr, "cannot find function");
return -1;
}
if(!PyCallable_Check(pFunc)){
fprintf(stderr, "function check failed");
return -1;
}
PyObject *pArgs = Py_BuildValue("(dd)", 2.0, 3.0);
PyObject *result = PyObject_CallObject(pFunc, pArgs);
Py_DECREF(pArgs);
double retval = PyFloat_AsDouble(result);
Py_DECREF(result);
fprintf(stderr, "retval is %f", retval);
Py_Finalize();
return 0;
}
def multiply(a,b):
print("Will compute", a, "times", b)
c = a * b
print("the result is ", c)
return c
参考文档
调用协议
解析参数并构建值变量