使用C++; 我使用Eclipse运行C++。在我的代码中,我使用Python的高级嵌入来运行函数。当我尝试使用sys并导入它时。我得到一个错误:
致命的Python错误:sys.argv没有mem 代码:使用C++; 我使用Eclipse运行C++。在我的代码中,我使用Python的高级嵌入来运行函数。当我尝试使用sys并导入它时。我得到一个错误:,python,c++,unicode,sys,python-embedding,Python,C++,Unicode,Sys,Python Embedding,致命的Python错误:sys.argv没有mem 代码: #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,字符**argv) { Py_初始化(); PySys_SetArgv(argc,(wchar_t**)argv); PyRun_SimpleString(“导入系统”); Py_Finalize(); 返回0; } 当我从终端运行.exe时,我得到 ValueError:字符U+384d2f2e不在范围[U+0000;U+10ffff]
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
Py_初始化();
PySys_SetArgv(argc,(wchar_t**)argv);
PyRun_SimpleString(“导入系统”);
Py_Finalize();
返回0;
}
当我从终端运行.exe时,我得到
ValueError:字符U+384d2f2e不在范围[U+0000;U+10ffff]
流产
在解决这个问题时,我们非常感谢您的帮助。
谢谢。错误在于Python希望**argv指向一组unicode值。相反,argv指向chars 要解决这个问题:
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;
希望这对其他人有帮助
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;