嵌入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.