تحميل dll من بايثون
-
03-07-2019 - |
سؤال
أقوم بإنشاء تطبيق بايثون من بعض أكواد المصدر التي وجدتها هنا
لقد تمكنت من تجميع بعض المشكلات وإصلاحها من خلال البحث في الويب، لكنني عالق في هذه المرحلة:
عند تشغيل التطبيق تظهر هذه الرسالة
نص بديل 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
الحل هو تشغيل MT مع البيان وملف dll.لقد فعلت ذلك بالفعل ولا يعمل أيضًا.
هل يمكن لأحد أن يوجهني إلى الاتجاه الصحيح؟
وهذا هو محتوى البيان المبين:
<?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 كان لديهما السلسلة "MSVCR71.dll" داخل ملف .exe.ولكن ربما هذا ليس له علاقة.
ملاحظة.لو كان كل شيء سهلاً مثل ملفات 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).
المحلول
ولقد كنت قادرا على ترجمة وتشغيل النينيو باستخدام / LD كما علم مترجم. هذه الروابط بشكل حيوي البصرية وقت التشغيل MS C ++، ويبدو أن تسمح لك للحصول على بعيدا دون البيان.
إذا كنت تستخدم SCons، راجع الملف فرق هنا: http://paste2.org/p/ 69732
نصائح أخرى
وعند النظر إلى التحديث، يبدو أنك تحتاج إلى تثبيت Pycairo منذ كنت في عداد المفقودين وحدة _cairo تثبيت كجزء من Pycairo. انظر Pycairo تنزيل صفحات للحصول على تعليمات حول كيفية الحصول على / تثبيت ثنائيات ويندوز.
وربما كنت بحاجة إلى تثبيت VC ++ redistributables وقت التشغيل. الروابط لهم هي هنا .
تحديثلقد قمت بتنزيل إصدار python2.6 وVS C++ Express لعام 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