2

ここで見つけたソースコードからPythonアプリケーションを構築しています

Web を検索していくつかの問題をコンパイルして修正することができましたが、この時点で立ち往生しています。

アプリケーションを実行すると、このメッセージが表示されます。

代替テキスト http://img511.imageshack.us/img511/4481/loadfr0.png

この python アプリは、swig を使用して c/c++ コードにリンクします。

私は VC++2005 Express Edition を持っており、scons と Python 2.5 と共にコンパイルするのに使用していました (そして 2.4 も試しました)。

ロードしようとしているdllは「msvcr80.dll」です。これは、メッセージが「msvcr80.dll」になる前に見つからないか、そのようなものであるため、取得してwindow32フォルダーにドロップしました。

私がここで読んだことについて: http://msdn.microsoft.com/en-us/library/ms235591(VS.80).aspx

解決策は、マニフェストと dll ファイルを使用して MT を実行することです。私はすでにそれを行いましたが、どちらも機能しません。

誰かが私を正しい方向に向けることができますか?

これは、マニフェスト ファイルの内容です。

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

今、Python 2.6 を試してみますが、問題を理解できるかどうかはよくわかりませんが、Python 2.5 と Python 2.5 の .exe には、.exe ファイル内に文字列 "MSVCR71.dll" が含まれていました。しかし、おそらくこれは何の関係もありません。

ps。すべてがjarファイルと同じくらい簡単だったら:(

これは完全を期すためのスタック トレースです。

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).
4

4 に答える 4

2

アップデートを見ると、Pycairoの一部としてインストールされている_cairoモジュールがないため、Pycairoをインストールする必要があるようです。Windows用のバイナリを取得/インストールする方法については、 Pycairoのダウンロードページを参照してください。

于 2008-10-21T15:18:38.793 に答える
0

/ LDをコンパイラフラグとして使用することで、Ensoをコンパイルして実行することができました。これはMSVisualC ++ランタイムに動的にリンクし、マニフェストなしで逃げることができるようです。

SConsを使用している場合は、次のdiffファイルを参照してください:http://paste2.org/p/69732

于 2008-10-21T07:53:11.377 に答える
0

更新 python2.6 と VS C++ Express Edition 2008 をダウンロードしましたが、msvcr80.dll の問題はなくなりました (Python と VSC++2008xe が msvscr90.dll を使用しているためだと思います)。

/LD でコンパイルし、ここにリストされているすべての変更を加えました: http://paste2.org/p/69732

そして今、問題は次のとおりです。

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
于 2008-10-21T08:50:26.050 に答える
0

おそらく、VC++ ランタイム再頒布可能パッケージをインストールする必要があります。それらへのリンクはここにあります。

于 2008-10-21T06:20:16.103 に答える