Pregunta

Estoy creando una aplicación de Python a partir de un código fuente que encontré Aquí

He logrado compilar y solucionar algunos problemas buscando en la web, pero estoy atascado en este punto:

Cuando se ejecuta la aplicación, aparece este mensaje.

texto alternativo http://img511.imageshack.us/img511/4481/loadfr0 .png

Esta aplicación de Python, utiliza swig para vincular a código c / c ++.

Tengo VC ++ 2005 express edition que solía compilar junto con scons y Python 2.5 (y probé 2.4 también)

Los archivos DLL que intentan cargar son " msvcr80.dll " porque antes el mensaje era "msvcr80.dll" no se puede encontrar o algo así, así que lo obtuve y lo dejo en la carpeta window32.

Por lo que he leído aquí: http://msdn.microsoft.com/en-us /library/ms235591(VS.80).aspx

La solución es ejecutar MT con el archivo de manifiesto y el archivo dll. Ya lo hice y tampoco funciona.

¿Alguien podría señalarme la dirección correcta?

Este es el contenido del manifiesto fie:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

Voy a probar Python 2.6 ahora, no estoy muy seguro de entender el problema, pero Python 2.5 y Python 2.5 .exe tenían la cadena " MSVCR71.dll " dentro del archivo .exe. Pero probablemente esto no tiene nada que ver.

ps. si todo fuera tan fácil como archivos jar :(

Este es el seguimiento de la pila para completar

None
INFO:root:Skipping provider enso.platform.osx.
INFO:root:Skipping provider enso.platform.linux.
INFO:root:Added provider enso.platform.win32.
Traceback (most recent call last):
  File "scripts\run_enso.py", line 24, in <module>
    enso.run()
  File "C:\oreyes\apps\enso\enso-read-only\enso\__init__.py", line 40, in run
    from enso.events import EventManager
  File "C:\oreyes\apps\enso\enso-read-only\enso\events.py", line 60, in <module>
    from enso import input
  File "C:\oreyes\apps\enso\enso-read-only\enso\input\__init__.py", line 3, in <module>
    _input = enso.providers.getInterface( "input" )
  File "C:\oreyes\apps\enso\enso-read-only\enso\providers.py", line 137, in getInterface
    interface = provider.provideInterface( name )
  File "C:\oreyes\apps\enso\enso-read-only\enso\platform\win32\__init__.py", line 48, in provideInterface
    import enso.platform.win32.input
  File "C:\oreyes\apps\enso\enso-read-only\enso\platform\win32\input\__init__.py", line 3, in <module>
    from InputManager import *
  File "C:\oreyes\apps\enso\enso-read-only\enso\platform\win32\input\InputManager.py", line 7, in <module>
    import _InputManager
ImportError: DLL load failed: Error en una rutina de inicializaci¾n de biblioteca de vÝnculos dinßmicos (DLL).
¿Fue útil?

Solución

He podido compilar y ejecutar Enso usando / LD como indicador de compilador. Esto se vincula dinámicamente con el tiempo de ejecución de MS Visual C ++ y parece permitirte escapar sin un manifiesto.

Si está utilizando SCons, consulte el archivo diff aquí: http://paste2.org/p/ 69732

Otros consejos

Mirando su actualización, parece que necesita instalar Pycairo ya que no está El módulo _cairo instalado como parte de Pycairo. Consulte la página de descargas de Pycairo para obtener instrucciones sobre cómo obtener / instalar binarios para Windows.

Probablemente necesite instalar los redistribuibles de tiempo de ejecución de VC ++. Los enlaces a ellos están aquí .

actualización He descargado python2.6 y VS C ++ Express Edition 2008 y el problema con el msvcr80.dll se ha ido (supongo que porque Python y VSC ++ 2008xe usan msvscr90.dll)

Compilé con / LD y todos los cambios enumerados aquí: http://paste2.org/p / 69732

Y ahora sigue el problema:

INFO:root:Skipping provider enso.platform.osx.
INFO:root:Skipping provider enso.platform.linux.
INFO:root:Added provider enso.platform.win32.
INFO:root:Obtained interface 'input' from provider 'enso.platform.win32'.
Traceback (most recent call last):
  File "scripts\run_enso.py", line 23, in <module>
    enso.run()
  File "C:\oreyes\apps\enso\enso-comunity\enso\__init__.py", line 41, in run
    from enso.quasimode import Quasimode
  File "C:\oreyes\apps\enso\enso-comunity\enso\quasimode\__init__.py", line 62, in <module>
    from enso.quasimode.window import TheQuasimodeWindow
  File "C:\oreyes\apps\enso\enso-comunity\enso\quasimode\window.py", line 65, in <module>
    from enso.quasimode.linewindows import TextWindow
  File "C:\oreyes\apps\enso\enso-comunity\enso\quasimode\linewindows.py", line 44, in <module>
    from enso import cairo
  File "C:\oreyes\apps\enso\enso-comunity\enso\cairo.py", line 3, in <module>
    __cairoImpl = enso.providers.getInterface( "cairo" )
  File "C:\oreyes\apps\enso\enso-comunity\enso\providers.py", line 137, in getInterface
    interface = provider.provideInterface( name )
  File "C:\oreyes\apps\enso\enso-comunity\enso\platform\win32\__init__.py", line 61, in provideInterface
    import enso.platform.win32.cairo
  File "C:\oreyes\apps\enso\enso-comunity\enso\platform\win32\cairo\__init__.py", line 1, in <module>
    from _cairo import *
ImportError: No module named _cairo
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top