python - 从 Python Embedded in C++ 使用 sys 时出错

标签 python c++ unicode sys python-embedding

我正在使用 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/

相关文章:

java - javascript 中的 JSON 字符编码与 java 不同

python - 如何在嵌套列表 Python 中连接两个列表?

c++ - 错误 : pointer being freed was not allocated

c++ - 用 C++ 创建一个独立的程序

java - C++/Java - 键盘 Hook

c# - 字符串总是 Little Endian Unicode 吗?

sql-server - 显示字符串的十六进制转储

python - Gekko unreachable server,本地解决json文件错误

python - 无法在 Windows 7 上导入 ctypes

python - 在两个数据之间保持相同的因式分解