如前所述,使用PyRun_SimpleString似乎是个坏主意。
您绝对应该使用C-
API(http://docs.python.org/c-api/)提供的方法。
阅读介绍是了解其工作方式的第一件事。
首先,您必须了解PyObject,它是C API的基本对象。它可以代表任何类型的python基本类型(字符串,浮点数,整数,…)。
存在许多函数,例如将python字符串转换为char *或PyFloat转换为double。
首先,导入您的模块:
PyObject* myModuleString = PyString_FromString((char*)"mytest");PyObject* myModule = Pyimport_import(myModuleString);
然后获得对您的函数的引用:
PyObject* myFunction = PyObject_GetAttrString(myModule,(char*)"myabs");PyObject* args = PyTuple_Pack(1,PyFloat_FromDouble(2.0));
然后得到你的结果:
PyObject* myResult = PyObject_CallObject(myFunction, args)
回到双:
double result = PyFloat_AsDouble(myResult);
您显然应该检查错误(请参阅Mark Tolonen给出的链接)。
如有任何疑问,请不要犹豫。祝好运。



