WindowsError:[Error 126]加载带有ctypes的DLL时

2024-06-16 10:19:38 发布

您现在位置:Python中文网/ 问答频道 /正文

这在使用Python2.7的Windows7上运行良好:

lib = ctypes.cdll.LoadLibrary('prov_means')
provmeans = lib.provmeans  

库prov_表示.DLL在我的工作目录中。它导出一个简单的、独立的C函数provmeans(),而不依赖于它。

当我在Windows XP和Python 2.7上尝试同样的方法时,我得到了

Traceback (most recent call last):
  File "D:\python\Auxil\src\auxil.py", line 130, in <module>
    lib = ctypes.cdll.LoadLibrary('prov_means')
  File "C:\Python27\lib\ctypes\__init__.py", line 431, in LoadLibrary
    return self._dlltype(name)
  File "C:\Python27\lib\ctypes\__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found 

我已尝试将DLL复制到Windows\System32并输入完整路径名

"d:\\python\\auxil\\src\\prov_means"

有和没有“.DLL”扩展名。什么都不管用。


Tags: inpyselfinitwindowsliblinectypes
2条回答

当找不到依赖DLL时,将得到错误126。有两个明显的原因:

  1. 找不到您的DLL。
  2. 您的DLL依赖于找不到的其他DLL。

我怀疑选项1是问题所在,但无论如何,我想我可能会使用该DLL的完整路径来确定。

这样就可以选择选项2,最常见的原因是目标机器没有安装C++运行时。或者在目标机器上安装C++运行时,或者在构建DLL时使用静态链接^ ^{},这样就不需要重新分配运行时。

可能,在开发DLL的机器上,安装了C++编译器,并为您安装了运行时。在目标计算机上,如果代码失败,则尚未安装编译器,因此运行时不存在。

你用哪个编译器来建立这个库?可能缺少一些必需的库?您可以检查库与依赖项Walker有哪些依赖项(http://www.Dependency Walker.com/)?

相关问题 更多 >