我正在使用 Eclipse 运行 C++。在我的代码中,我使用 Python 的高级嵌入来运行函数。当我尝试使用 sys 并将其导入时。我收到错误:
致命的 Python 错误:没有用于 sys.argv 的内存
代码:
#include <python3.4m/Python.h>
#include <iostream>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char **argv)
{
Py_Initialize();
PySys_SetArgv(argc, (wchar_t**)argv);
PyRun_SimpleString("import sys\n");
Py_Finalize();
return 0;
}
当我从终端运行 .exe 时,我得到了
ValueError:字符 U+384d2f2e 不在范围 [U+0000; U+10ffff] 已中止
在解决此问题时,我们将不胜感激。 谢谢。
最佳答案
错误是 Python 期望 **argv 指向一组 unicode 值。相反,argv 指向字符。
解决这个问题:
wchar_t **wargv;
wargv = (wchar_t**)malloc(1*sizeof(wchar_t *));
*wargv = (wchar_t*)malloc(6*sizeof(wchar_t));
**wargv = L'argv1';
Py_Initialize();
PySys_SetArgv(1, (wchar_t**)wargv);
PyRun_SimpleString("import sys\n"
"print('test')\n");
Py_Finalize();
return 0;
希望这对其他人有帮助。
关于python - 从 Python Embedded in C++ 使用 sys 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644907/