在C ++中使用Python嵌入式系统的错误

时间:2016-09-22 17:02:47

标签: python c++ unicode sys python-embedding

我正在使用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] 中止

在解决此问题时,我们非常感谢您提供帮助。 谢谢。

1 个答案:

答案 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;

希望这有助于其他人。