Сбой при выполнении скрипта Python через программу C ++ - PullRequest
0 голосов
/ 26 мая 2019

Я использую 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. "

но я не уверен, что понял значение.

какие-либо предложения, пожалуйста?

...