Ecco il mio codice:Come compilare semplice programma embeded Python usando distutils
from distutils.msvc9compiler import MSVCCompiler
target_python_file = "main.py"
ccode = """#include <Python.h>
int
main(int argc, char *argv[])
{
PyObject* PyFileObject;
putenv("PYTHONPATH=lib");
putenv("PYTHONHOME=.");
Py_SetProgramName(argv[0]);
Py_Initialize();
PyFileObject = PyFile_FromString("%s", "r");
PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "%s", 1);
Py_Finalize();
return 0;
}
""" % (target_python_file, target_python_file)
with open("main.c","w") as main:
main.write(ccode)
compiler = MSVCCompiler()
compiler.compile(["main.c"],include_dirs=["C:/Python27/include"])
compiler.link("",["main.obj"],"python_launcher.exe",libraries=["python27"], library_dirs=["C:/Python27/libs"])
Quando eseguo questo, python_launcher.exe
appare, tuttavia, quando provo a farlo funzionare, io non ottengo un errore di un'applicazione di Win32 valida.
Posso compilare lo stesso codice utilizzando visaul C++ 2008 e funziona, ma voglio utilizzare distutils per questo, perché voglio capire le opzioni di configurazione per il compilatore.
Debug
ho provato ad aprire creato eseguibile in WINDEBUG, ma non riuscivo ad aprire, perché questo è accaduto:
parte turca dice che non è un'applicazione di Win32 valida.
Qual è lo stack di chiamate esatte che si ottiene? – Abhijit
@Abhijit Non riesco a ottenere una traccia dello stack. Vedi il mio quesiton aggiornato. – yasar