Domanda

Sto creando un'applicazione Python da un codice sorgente che ho trovato Qui

Sono riuscito a compilare e risolvere alcuni problemi cercando sul web, ma a questo punto sono bloccato:

Durante l'esecuzione dell'applicazione appare questo messaggio.

alt text http://img511.imageshack.us/img511/4481/loadfr0 .png

Questa app Python utilizza swig per collegarsi al codice c / c ++.

Ho VC ++ 2005 Express Edition che ho usato per compilare insieme a Scons e Python 2.5 (e provato anche 2.4)

Le dll che stanno tentando di caricare è " msvcr80.dll " perché prima il messaggio era " msvcr80.dll " non può essere trovato o qualcosa del genere, quindi l'ho preso e rilasciato nella cartella window32.

Per quello che ho letto qui: http://msdn.microsoft.com/en-us /library/ms235591(VS.80).aspx

La soluzione è eseguire MT con il file manifest e il file dll. L'ho già fatto e non funziona neanche.

Qualcuno potrebbe indicarmi la direzione corretta?

Questo è il contenuto del manifest manifest:

<?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>

Ora proverò Python 2.6, non sono del tutto sicuro di capire il problema, ma Python 2.5 e Python 2.5 .exe avevano la stringa "MSVCR71.dll"; all'interno del file .exe. Ma probabilmente questo non ha nulla a che fare.

ps. se solo tutto fosse facile come i file jar :(

Questa è la traccia dello stack per completezza

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).
È stato utile?

Soluzione

Sono stato in grado di compilare ed eseguire Enso usando / LD come flag di compilatore. Ciò si collega in modo dinamico al runtime di MS Visual C ++ e sembra consentire all'utente di uscire senza manifest.

Se stai usando SCons, vedi il file diff qui: http://paste2.org/p/ 69732

Altri suggerimenti

Guardando l'aggiornamento, sembra che sia necessario installare Pycairo poiché ti manca il modulo _cairo installato come parte di Pycairo. Consulta la pagina di download di Pycairo per istruzioni su come ottenere / installare i binari per Windows.

Probabilmente dovrai installare i ridistribuibili di runtime VC ++. I link a questi sono qui .

Aggiorna Ho scaricato python2.6 e VS C ++ express edition 2008 e il problema con msvcr80.dll è sparito (suppongo perché Python e VSC ++ 2008xe usano msvscr90.dll)

Ho compilato con / LD e tutte le modifiche elencate qui: http://paste2.org/p / 69732

E ora il problema segue:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top