Я использую 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] Отменено
Любая помощь приветствуется в решении этой проблемы.
Спасибо.
Ошибка состояла в том, что 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;
Надеюсь, это поможет кому-то еще.
Других решений пока нет …