Встраивание Windows Python в программу Cygwin / GCC C ++ - PullRequest
2 голосов
/ 21 августа 2009

В настоящее время я работаю над приложением Cygwin / GCC, написанным на C ++. Приложение требует встраивания python для запуска плагинов, я успешно внедрил его с использованием библиотек Python Cygwin и смог запустить простые файлы python как часть программы. Однако теперь для файлов python требуется использование среды графического интерфейса Windows (wxPython), и поэтому мне нужно иметь возможность встраивать среду Windows Python, иначе я не смогу использовать среду в файлах python. В попытке сделать это я создал libpython25.a, используя шаг 2 из этих инструкций . Затем я использовал библиотеку / заголовочные файлы установки Windows для его компиляции. Однако, когда я запускаю его, программа вылетает со странным выводом отладчика (отладочная информация включена, как ни странно).

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 ?? ()'

Если бы кто-то сделал это успешно, я был бы очень признателен за помощь. Возможно ли встраивание Windows Python в программу Cygwin / GCC? Если нет, каковы мои другие варианты? (Прямо сейчас я могу думать только о переходе на VC ++, но это было бы довольно радикально, также я не хочу использовать X11 для GUI).

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

Похоже, что у вас есть 32-битное / 64-битное несоответствие.

Вы запускаете код на 64-битной машине (потому что есть папка SysWow64), но я предполагаю, что ваш python25.dll 32-битный Что сбивает с толку, так это то, что «system32» содержит 64-битные DLL.

+ Я не думаю, что отладка включена, вы видите только публичные символы.

0 голосов
/ 21 августа 2009

Не прямой ответ, но вы можете разделить систему на 2 процесса - Cygwin (Python & C ++, без wxPython) и win32 (Python & wxPython) и связываться между ними с помощью RPyC XML-RPC и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...