LoadLibrary: указанная процедура не найдена

1

Мне нужно извлечь некоторые вещи о системном процессе на сервере Windows 2003 (да, в 2019 году), я сделал этот код на python и скомпилировал его с помощью auto_py_to_exe

Когда я запускаю файл .exe на сервере, я получаю сообщение об ошибке "LoadLibrary: The specified procedure could not be found." ссылаясь на python37.dll

Я пытаюсь скомпилировать как один каталог (с включенным конкретным dll), и я пытаюсь скомпилировать как один файл, и я получаю следующий вывод.

  • 0
    Python37.dll в каталоге указывает на ошибку?
  • 0
    Да, сэр, python37.dll находится в директории
Теги:
dll
windows-server-2003

2 ответа

1

Между Python 3.7 и Win 2003 слишком большой разрыв. Глядя на [Python.Wiki]: WindowsCompilers Python 3.7 там даже не указан (так как он собран с VStudio 2017). Для этого (и самого Python) потребуются функции /call, которых нет в системных библиотеках Win 2003.

Вот пример. На изображениях ниже я открыл 2.dll(2.7 и 3.7) main.dll с помощью Dependency Walker:

Изображение 174551

Как видно, оба импортируют кучу функций из kernel32.dll. Но одно отличие состоит в том, что python37.dll импортирует GetTickCount64. Согласно [MS.Docs]: функция GetTickCount64, минимальная версия Сервера, которая поддерживает это, является Win 2008, то есть она не будет работать в Win 2003.

Итак, вам придется вернуться к Python 2.7 (вершины). Несколько лет назад я собрал Python 2.7.10 с VStudio 2010, и он работал на Win 2003 (и XP SP 1); скорее всего, это относится и к самой последней (2.7) версии.

Обратите внимание, что вам также необходимо установить все пакеты, которые вы используете в своем скрипте (включая auto-py-to-exe).

@EDIT0:

Я вспомнил (и только что проверил), что у меня есть Python 3.4.3 на моем ПК с XP (SP 3). Таким образом, существует высокая вероятность того, что Python 3 (до 3.5) будет работать и на Win 2003.

@EDIT1:

Наконец, у меня есть официальное выражение: на официальной странице Python при наведении курсора мыши на кнопку "Скачать" вы увидите:

Обратите внимание, что Python 3. 5+ нельзя использовать в Windows XP или более ранней версии.

или (еще яснее):

Изображение 174551

Обратите внимание, что это не обязательно означает, что старые версии гарантированно будут работать. Итак, вам нужно будет немного протестировать (я бы рекомендовал установить Python и необходимые пакеты на целевой машине, и только когда все успешно, упаковывайте все).

@EDIT2:

Я упомянул, что я собрал версию Python2.7. psutil был частью этого.

>>> import sys, platform, psutil
>>> sys.version, sys.platform
('2.7.10 (default, Mar  8 2016, 15:08:43) [MSC v.1600 32 bit (Intel)]', 'win32')
>>> platform.platform()
'Windows-XP-5.1.2600-SP3'
>>> psutil.__version__
'3.1.1'

Я не упомянул, что я собрал psutil из исходных кодов, но готовые установщики .whls и Win доступны для скачивания: [PyPI]: psutil 3.1.1 - Загрузка файлов.

  • 0
    спасибо за все, наконец-то я использовал python 2.7.9 и py2exe, это решено, но PSutil не совместим с сервером windows 2003. Вы знаете какую-то альтернативу PSutil, чтобы сделать wmi-консультации, такие как использование процессора?
  • 0
    Добавлено в ответ: я использовал версию 3.1.1 .
0

наконец, я использовал Python 2.7.9 и py2exe, он решил, но PSutil его не совместим с сервером Windows 2003: c

  • 0
    Как я показал в своем ответе, я использую psutil с XP (а также с Win 2003 ). Это правда, я построил это из источников, но у вас также есть файлы .whl s: pypi.org/project/psutil/3.1.1/#files . Кроме того, что означает « несовместимый »?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню