嵌入python
我试图从C代码调用python函数,我从这里跟随样本
我也有正确的包含文件目录,库目录,并链接python32.lib(即时使用python 32)但是错误是python / C API,如PyString_FromString,PyInt_FromLong,PyInt_AsLong未定义(调试器中的错误)
这很奇怪,因为我也使用其他API,但它们都很好……
这是什么问题?
int main(int argc, char *argv[]) { PyObject *pName, *pModule, *pDict, *pFunc; PyObject *pArgs, *pValue; int i; if (argc < 3) { fprintf(stderr,"Usage: call pythonfile funcname [args]\n"); return 1; } Py_Initialize(); pName = PyString_FromString(argv[1]); /* Error checking of pName left out */ pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule != NULL) { pDict = PyModule_GetDict(pModule); /* pDict is a borrowed reference */
Py_Initialize(),PyImport_Import(),PyModule_GetDict()都可以正常工作,但不是PyString_FromString …
您使用的示例代码是针对古代Python版本2.3.2。 Python 3.x系列不仅在语言中引入了许多不兼容项,而且在C API中引入了许多不兼容项。
您提到的function在Python 3.2中不再存在。
PyBytes_
函数被重命名为PyBytes_
。
PyInt_
函数消失了,应该使用PyLong_
。
以下是您使用但Python 3的相同示例:
5.3。 纯嵌入
请注意,它使用的是PyUnicode_
而不是PyString_/PyBytes_
。 在Python 2.x使用字节字符串的许多地方,Python 3.x使用unicode字符串。
顺便说一句,我通常使用此页面查找所有可能的调用:
指数 – P.