Сейчас на форуме: (+6 невидимых)

 eXeL@B —› Программирование —› ImportError("Error loading the diStorm dynamic library (or cannot load library into process).
Посл.ответ Сообщение


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 13 декабря 2019 04:31 · Поправил: plutos
· Личное сообщение · #1

Если кто-нибудь пытался использовать distorm3, пожалуйста, помогите разобраться.

При попытке использования "python sample.py exefile.exe" в __init__.py, куда переходит контроль после строчки "import distorm3" в sample.py вылетает exception после исполнения вот этого кода:

Code:
  1. # Guess the DLL filename and load the library.
  2. _distorm_path = split(__file__)[0]
  3. if hasattr(sys, '_MEIPASS'):
  4.     _distorm_path = sys._MEIPASS
  5. potential_libs = ['libdistorm3.so', 'libdistorm3.dylib']
  6. if os_name == 'nt':
  7.     potential_libs = ['distorm3.dll', 'libdistorm3.dll']
  8. lib_was_found = False
  9. for i in potential_libs:
  10.     try:
  11.                 lib_was_found = True#_distorm_file = join(_distorm_path, i)
  12.         #_distorm = cdll.LoadLibrary(_distorm_file)
  13.          from ctypes import cdll
  14.        cdll.LoadLibrary("distorm3.dll")
  15.  
  16.         break
  17.     except OSError:
  18.         pass
  19.  
  20. if lib_was_found == False:
  21.     raise ImportError("Error loading the diStorm dynamic library (or cannot load library into process).")


Замена
Code:
  1. #_distorm_file = join(_distorm_path, i)
  2. #_distorm = cdll.LoadLibrary(_distorm_file)

на
Code:
  1. from ctypes import cdll
  2.        cdll.LoadLibrary("distorm3.dll")

Ничего не дает, результат тот же.

distorm3.dll находится в том же directory
(C:\Python27-x64\Lib\site-packages\distorm3-3.4.1-py2.7-win-amd64.egg\distorm3),
что и сам __init__.py, но код ее в упор не видит.

os_name == 'nt'

Я в питоне новичок, и явно чего-то не догоняю, ткните носом!

-----
Give me a HANDLE and I will move the Earth.





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 декабря 2019 03:26 · Поправил: plutos
· Личное сообщение · #2

Во-первых, хочу поблагодарить участника по имени gerhart за подсказки.
Он написал:
"У меня используется подобная конфигурация distorm3. В первую очередь проверьте разрядность библиотеки distrom3.dll - она должна совпадать с разрядностью оболочки python. Если собирали не сами - проверьте зависимости от runtime библиотек Visual Studio.
Process Monitor'ом также стоит проверить - как производится поиск библиотеки distorm3.dll и какой результат возвращает LoadLibrary при её загрузке."

Следуя его советам, проделал все, но результата не достиг, запутался в этом змеином клубке питонов.

Короче, нашел windows installation for version 3.4.1 Python36 64bit (https://github.com/gdabah/distorm/issues/139) и все работает теперь.

Вспоминаю слова fiend'a:
Когда видишь два предложения "first, make sure you have python 3.6 32bits" и "The package will be at: C:\Python27-x64" рядом, жди беды.


-----
Give me a HANDLE and I will move the Earth.



 eXeL@B —› Программирование —› ImportError("Error loading the diStorm dynamic library (or cannot load library into process).
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати