2009-08-20 6 views
2

Je travaille actuellement sur une application Cygwin/GCC écrite en C++. L'application nécessite l'intégration de python pour exécuter les plug-ins, j'ai réussi à les intégrer en utilisant les bibliothèques Cythwin python et j'ai pu exécuter des fichiers python simples dans le cadre du programme. Cependant, les fichiers python nécessitent maintenant l'utilisation d'un framework Windows GUI (wxPython), et je dois donc pouvoir intégrer l'environnement Windows Python, sinon je ne peux pas utiliser le framework dans les fichiers python. Dans une tentative de faire cela, j'ai créé libpython25.a en utilisant l'étape 2 de these instructions. J'ai ensuite utilisé les fichiers de bibliothèque/d'en-tête de l'installation de Windows pour le compiler. Cependant, quand je l'exécute, le programme plante avec une sortie de débogueur étrange (l'information de débogage est activée, assez étrangement).Intégration de Windows Python dans le programme C++ Cygwin/GCC

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

Si quelqu'un l'a fait avec succès, j'apprécierais grandement l'aide. Est-ce que l'intégration de Windows python dans un programme Cygwin/GCC est possible? Sinon, quelles sont mes autres options? (À l'heure actuelle, je ne peux que penser à passer à VC++, mais ce serait assez drastique, aussi je ne veux pas utiliser X11 pour l'interface graphique).

+0

Mélanger le cypython unix avec les trucs de Windows cpython est un monde de mal. Bienvenue à ça. Je suppose qu'une année s'est écoulée et qu'il n'est toujours pas possible de faire ce travail? –

Répondre

0

Pas une réponse directe, mais vous pouvez diviser le système en 2 processus - celui Cygwin (Python & C++, pas wxPython) et celui win32 (Python & wxPython) et de communiquer entre eux avec RPyC, XML-RPC,

+0

hm ... pas mal. En regardant RPyC, il semble que nous écrivions du code Python du côté de Cygwin qui gère la communication entre le programme et les processus de plug-in séparés. Notre application est déjà multi-thread, donc je suppose que nous pouvons l'étendre pour être multi-processus. Merci pour la suggestion, semble assez complexe, mais c'est la meilleure idée jusqu'à présent. Je vais devoir regarder plus loin. –

0

Il semble que vous ayez une discordance de 32 bits/64 bits.

Vous exécutez du code sur une machine 64 bits (car il existe un dossier SysWow64), mais je suppose que votre python25.dll est de 32 bits. Ce qui prête à confusion, c'est que "system32" contient des DLL 64 bits.

+ Je ne pense pas que le débogage est activé, vous ne voyez que les symboles publics.

Questions connexes