python - 加载库: The specified procedure could not be found

标签 python windows dll windows-server-2003

我需要提取有关 Windows 2003 服务器中系统进程的一些信息(是的,在 2019 年),我用 python 编写了该代码,并使用 auto_py_to_exe 编译它

当我在服务器上运行 .exe 文件时,我收到一条错误消息,指出 “LoadLibrary: 找不到指定的过程。” 引用了 python37.dll

我尝试像一个目录一样编译(包含特定的 dll),我尝试像一个文件一样编译,我得到以下 output .

最佳答案

Python 3.7 和 Win 2003 之间差距太大。正在查看[Python.Wiki]: WindowsCompilers Python 3.7 甚至没有列出(因为它是使用 VStudio 2017 构建的)。那(以及Python本身)将需要/调用Win 2003系统.dll中不存在的函数。

这是一个例子。在下图中,我使用 Dependency Walker 打开了 2 个版本的(2.73.7)主 .dll :

Img0

正如所见,两者都从 kernel32.dll 导入一堆函数。但一个区别是 python37.dll 导入 GetTickCount64。根据[MS.Docs]: GetTickCount64 function ,支持它的最低服务器版本是Win 2008,这意味着它无法在Win 2003中工作.

所以,你必须回到python 2.7(顶部)。几年前,我使用 VStudio 2010 构建了Python 2.7.10,并且它可以在< em>Win 2003(和XP SP 1);这很可能也适用于最新版本(2.7)。

请注意,您还必须安装在脚本中使用的所有软件包(包括 auto-py-to-exe)。

@EDIT0:

我记得(刚刚检查过)我的 XP(SP 3)上有 Python 3.4.3>) PC。因此,Python 3(3.5之前的版本)很有可能也可以在 Win 2003 上运行。

@EDIT1:

最后,我有一些官方声明:关于Python官方页面,将鼠标悬停在“下载”按钮上会产生:

Note that Python 3.5+ cannot be used on Windows XP or earlier.

或者(更清楚):

Img1

请注意,这并不一定意味着旧版本一定可以工作。因此,您需要进行一些测试(我建议在目标计算机上安装 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,但预构建的 .whl 以及 Win 安装程序都可用下载:[PyPI]: psutil 3.1.1 - Download files .

关于python - 加载库: The specified procedure could not be found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188308/

相关文章:

python - 如何查看 sqlite3 Python 模块在 Ubuntu 16.04 上使用的 sqlite3 二进制文件?

python - 如何在 Python PyX 中隐藏轴文本

python - 成功部署后,Google App Engine 不运行任何实例

c++ - 许多功能的单个 DLL 入口点

c++ - UxTheme.dll 的函数原型(prototype)类型/声明 - 动态加载

python - 在python中使用基因表达矩阵进行层次聚类

java - 在 ProcessBuilder 中执行命令似乎不适用于 Windows (Kotlin) 中的 "java"命令

c++ - 从非子进程获取退出代码

c - 使用 C 和原始 Win32 设置按钮图标

dll - 在 C/C++ DLL 中导出 MSVS 2013 中的函数,供 Mozilla js-ctypes 使用