2009-08-20 10 views
2

Ich arbeite derzeit an einer Cygwin/GCC-Anwendung in C++ geschrieben. Die Anwendung erfordert die Einbettung von Python in die Ausführung von Plug-ins. Ich habe die Cygwin-Python-Bibliotheken erfolgreich eingebettet und konnte einfache Python-Dateien als Teil des Programms ausführen. Allerdings benötigen die Python-Dateien jetzt ein Windows-GUI-Framework (wxPython), und daher muss ich in der Lage sein, die Windows Python-Umgebung einzubetten, sonst kann ich das Framework nicht in den Python-Dateien verwenden. In einem Versuch, dies zu tun, erstellte ich libpython25.a mit Schritt 2 von these instructions. Ich habe dann die Bibliothek/Header-Dateien der Windows-Installation verwendet, um es zu kompilieren. Wie auch immer, wenn ich es starte, stürzt das Programm mit einer seltsamen Debugger-Ausgabe ab (Debug-Info ist merkwürdig genug).Einbetten von Windows Python in Cygwin/GCC C++ - Programm

gdb: unknown target exception 0xc0000008 at 0x77139a13 
Program received signal ?, Unknown signal. 
[Switching to thread 2216.0x119c] 
0x77139a13 in ntdll!RtlLockMemoryZone() from /cygdrive/c/Windows/system32/ntdll.dll 
(gdb) where 
#0 0x77139a13 in ntdll!RtlLockMemoryZone() from /cygdrive/c/Windows/system32/ntdll.dll 
#1 0x030c1c7c in ??() 
#2 0x030c1c80 in ??() 
#3 0x1e0d0e80 in python25!_PyTime_DoubleToTimet() 
    from /cygdrive/c/Windows/SysWOW64/python25.dll 
#4 0x00000000 in ??()' 

Wenn jemand dies erfolgreich getan hat, würde ich die Hilfe sehr schätzen. Ist das Einbetten von Windows Python in ein Cygwin/GCC-Programm möglich? Wenn nicht, was sind meine anderen Optionen? (Im Moment kann ich nur daran denken, zu VC++ überzugehen, aber das wäre ziemlich drastisch, auch möchte ich X11 nicht für die GUI verwenden).

+0

Mischen der Unix-Cpython mit dem Windows-cpython Zeug ist eine Welt der Verletzung. Willkommen bei ihr. Ich vermute, dass ein Jahr vergangen ist und es immer noch nicht möglich ist, das zu schaffen? –

Antwort

0

keine direkte Antwort, aber man konnte das System in zwei Prozesse aufgeteilt - die Cygwin eines (Python & C++, kein WxPython) und die win32 einer (Python & WxPython) und zwischen ihnen mit RPyC, XML-RPC kommunizieren, usw.

+0

hm ... nicht schlecht. Wenn man RPyC betrachtet, scheint es, als würden wir auf der Cygwin-Seite Python-Code schreiben, der die Kommunikation zwischen dem Programm und den separaten Plug-in-Prozessen handhabt. Unsere App ist bereits multi-threaded, also können wir sie auf Multi-Prozess erweitern. Danke für den Vorschlag, scheint ziemlich komplex, aber es ist die beste Idee bisher. Ich muss weiter nachsehen. –

0

Es sieht so aus, als ob Sie einen 32 Bit/64 Bit Mismatch haben.

Sie führen Code auf einer 64-Bit-Maschine aus (weil es einen SysWow64-Ordner gibt), aber ich nehme an, dass Ihre python25.dll 32 Bit ist. Was verwirrend ist, ist, dass "system32" 64-Bit-DLLs enthält.

+ Ich glaube nicht, Debugging ist eingeschaltet, Sie sehen nur die öffentlichen Symbole.

Verwandte Themen