我正在使用我发现Here
的一些源代码构建一个python应用程序我已经设法通过搜索网络来编译和解决一些问题,但我仍然坚持这一点:
运行应用程序时会显示此消息。
alt text http://img511.imageshack.us/img511/4481/loadfr0.png
这个python应用程序,使用swig链接到c / c ++代码。
我有VC ++ 2005 express版,我曾经和scons一起编译 和Python 2.5(也试过2.4)
尝试加载的dll是“msvcr80.dll”,因为在找不到消息“msvcr80.dll”之类的东西之前,所以我把它拿到了window32文件夹中。
我在这里读到的内容: http://msdn.microsoft.com/en-us/library/ms235591(VS.80).aspx
解决方案是使用manifest和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).
答案 0 :(得分:2)
查看您的更新,看起来您需要安装Pycairo,因为您错过了作为Pycairo一部分安装的_cairo模块。有关如何获取/安装Windows二进制文件的说明,请参阅Pycairo downloads page。
答案 1 :(得分:0)
您可能需要安装VC ++运行时可再发行组件。它们的链接是here。
答案 2 :(得分:0)
我已经能够使用/ LD作为编译器标志来编译和运行Enso。这会动态链接到MS Visual C ++运行时,并且似乎允许您在没有清单的情况下离开。
如果您正在使用SCons,请在此处查看差异文件:http://paste2.org/p/69732
答案 3 :(得分: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