Stimmt. Das mit dem PyFileObjekt war wohl irgendwie daneben. Ich hab PyInitialize jetzt davor geschrieben, aber es ändert nichts und wenn ich versuche in PyRun_File einzusteppen bekomme ich "python33.pdb not loaded". Der Fehler trifft definitiv beim PyRun_File auf
Code: Alles auswählen
void executePython()
{
int result = 0;
Py_Initialize();
PyObject *pGlobal = PyDict_New();
PyObject *run_result = NULL;
FILE* main = fopen("F:\\Projects\\PySE\\testFile.py", "rb");
if (main == NULL){
printf("EXCEPTION: opening file\n");
goto error;
}
if (PyDict_SetItemString(pGlobal, "__builtins__", PyEval_GetBuiltins())==-1){
result = 1;
goto error;
}
run_result = PyRun_File(main, "F:\\Projects\\PySE\\testFile.py", Py_file_input, pGlobal, pGlobal);
if (run_result == NULL) {
result = 1;
goto error;
}
Py_Finalize();
error:
if (result != 0) PyErr_Print();
Py_XDECREF(run_result);
Py_XDECREF(pGlobal);
Py_Finalize();
if (main) fclose(main);
return;
}
Wenn ich PyRun_File auskommentiere (und dann darunter result = 1) läuft alles ohne fehler ab, also muss der Fehler in PyRun_File auftreten. Ich habe sowas ähnliches schon mit
Code: Alles auswählen
PyRun_String("import ctypes; ctypes.windll.user32.MessageBoxA(0, 'A', 'A', 1)", Py_file_input, pGlobal, pGlobal);
ausprobiert und das geht Problemlos. Als workaround würde mir einfallen, erst alles aus der Datei zu lesen und dann mit PyRun_String auszuführen, aber irgendwie muss das ja auch mit PyRun_File klappen.