简单的记录一下,仅供参考。
1
Py_SetPythonHome(L"D:\\Users\\XXX\\AppData\\Local\\Programs\\Python\\Python38\\");
这句好像一定要调用,否则Py_Initialize()就会异常,可能跟路径有关。不知道怎么设置可以不用调用这一句?
2 处理python函数返回值的时候,如果返回值是单个字符串,以下写法是对的:
PyObject* pRet = PyObject_CallObject(pFunc, args);
char *sourceCode;
PyArg_Parse(pRet, "s", &sourceCode);
注意: 接收返回字符串的sourceCode只能定义成 char *,而且要传入&sourceCode,。
类似以下的写法都不行:
char sourceCode[100];
PyArg_Parse(pRet, "s", &sourceCode); //乱码,即使没有中文
char *sourceCode;
PyArg_Parse(pRet, "s", sourceCode); //接收的字符串无效
网上还有人说使用PyString_AsString,但是python3.+这个函数已经没有了,说是被PyBytes_AsString这个函数取代
但是试了一下PyBytes_AsString接收到的字符串也会乱码(确定没有中文字符返回)。不知道为什么,有知道的童鞋可以说说哈。