我正在使用Eclipse来运行C ++。在我的代码中,我使用Python的高级嵌入来运行一个函数。当我尝试使用sys并导入它时。我收到错误:
致命的Python错误:没有sys.argv的记忆
CODE:
#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] 中止
在解决此问题时,我们非常感谢您提供帮助。 谢谢。
答案 0 :(得分:2)
错误是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;
希望这有助于其他人。