¿Por qué se bloquea la API Python / C en PyRun_SimpleFile?

He estado experimentando con la incorporación de diferentes lenguajes de secuencias de comandos en una aplicación C ++, actualmente estoy probando Stackless Python 3.1. He probado varios tutoriales y ejemplos, los pocos que puedo encontrar, para intentar ejecutar un script simple desde una aplicación.

Py_Initialize();

FILE* PythonScriptFile = fopen("Python Scripts/Test.py", "r");
if(PythonScriptFile)
{
    PyRun_SimpleFile(PythonScriptFile, "Python Scripts/Test.py");
    fclose(PythonScriptFile);
}

Py_Finalize();

Por alguna extraña razón, ejecutar este código resulta en una infracción de acceso en:

    PyRun_SimpleFile(PythonScriptFile, "Python Scripts/Test.py");

He buscado en línea a otros con un problema similar y encontré solo uno. Su única solución fue una solución alternativa que solo parece posible en una versión anterior de Python: crear un objeto de archivo python y devolver elFILE* de ese objeto de archivo de Python enPyRun_SimpleFile. Sin embargo, tales llamadas a funciones no están disponibles, la API Python 3.1 crea objetos de archivo a partir de un descriptor de archivo y devuelve descriptores de archivo, pero elPyRun_SimpleFile la función aún requiere unFILE*.

No sé cómo ejecutar las secuencias de comandos desde el archivo, menos cargar el archivo completo en la memoria manualmente y ejecutarlo como una cadena gigante, ciertamente no es una solución práctica.

¿Lo que da? ¿Cómo puedo realizar esta tarea si la API tiene un error interno?

Actualización: He logrado construir Stackless Python 3.1 desde la fuente y, sin embargo, el bloqueo permanece completamente sin cambios, a pesar de usar la misma biblioteca de tiempo de ejecución de C. Tanto mi proyecto como la fuente Stackless Python 3.1 están construidos con el compilador C ++ de Visual Studio 2010 y el tiempo de ejecución de C. Ya no tengo ninguna idea de lo que podría resolver este problema, salvo modificar Python para usar un nombre de archivo y no un ARCHIVO *. Otra solución terrible.

Respuestas a la pregunta(7)

Su respuesta a la pregunta