Ошибки при использовании sys из Python Embedded в стеке переполнения

Я использую 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 из терминала, я получаю

Ошибка значения: символ U + 384d2f2e не находится в диапазоне [U + 0000; U + 10FFFF] Отменено

Любая помощь приветствуется в решении этой проблемы.
Спасибо.

1

Решение

Ошибка состояла в том, что 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;

Надеюсь, это поможет кому-то еще.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]