Я использую code :: blocks v16.01 в Windows 10.
пытаюсь выполнить скрипт Python, который я написал (v3.7.3), из моей программы на c ++ через API Python.
я вижу, что скрипт работает независимо, но при запуске из программы на c ++ поток не возвращается для продолжения, теряется в пути и застревает на строке выполнения python "PyRun_SimpleFile (file, Xi_Path.c_str ()) ;» с ошибкой сегментации.
Я вижу, что скрипт python работает, так как он предполагает изменение XML-файла, и он действительно меняется.
это код, который я использую:
Py_SetProgramName(l_path);
Py_Initialize();
PySys_SetArgv(5, wargs);
FILE* file = fopen(Xi_Path.c_str(),"rb+");
PyRun_SimpleFile(file, Xi_Path.c_str());
Py_Finalize();
попытался изменить "rb +" на "r +", без изменений.
та же ошибка при использовании python v2.7
я столкнулся с этой документацией здесь , которая может пролить некоторый свет:
"Также обратите внимание, что некоторые из этих функций принимают параметры FILE *. Одна конкретная проблема, требующая тщательного рассмотрения, заключается в том, что структура FILE для разных библиотек C может быть разной и несовместимой. В Windows (по крайней мере) динамически связанные расширения могут фактически использовать разные библиотеки, поэтому следует позаботиться о том, чтобы параметры FILE * передавались этим функциям только в том случае, если есть уверенность, что они были созданы той же библиотекой, что и среда выполнения Python. "
но я не уверен, что понял значение.
какие-либо предложения, пожалуйста?