首先,将函数更改
return为值。
MyModule.py样子是这样的:
import thirdpartydef MyFunc(some_arg): result = thirdparty.go() return result
现在,要执行所需的操作,就必须超越文档的基本嵌入。这是运行您的功能的完整代码:
#include <Python.h>intmain(int argc, char *argv[]){ PyObject *pName, *pModule, *pFunc; PyObject *pArgs, *pArg, *pResult; int i; Py_Initialize(); pName = PyString_FromString("MyModule.py"); pModule = Pyimport_import(pName); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, "MyFunc"); if (pFunc) { pArgs = PyTuple_New(0); pArg = PyString_FromString("some parameter") PyTuple_SetItem(pArgs, 0, pArg); pResult = PyObject_CallObject(pFunc, pArgs); Py_DECREF(pArgs); if (pResult != NULL) { printf("Result of call: %sn", PyString_AsString(pResult)); Py_DECREF(pResult); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr,"Call failedn"); return 1; } } else { if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function"); } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); fprintf(stderr, "Failed to load module"); return 1; } Py_Finalize(); return 0;}


