WindowsError:[错误126]加载与ctypes的一个DLL时(WindowsError:

2019-06-24 03:04发布

这工作正常的Windows 7使用Python 2.7:

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

图书馆prov_means.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”扩展名。 没有什么作品。

Answer 1:

错误126是你当一个依赖DLL不能被发现。 这有两个明显的原因:

  1. 您的DLL没有被定位。
  2. 你的DLL取决于无法找到其他DLL。

我怀疑选项1是问题,但在任何情况下,我想我可能会使用一个完整路径的DLL是肯定的。

使叶片选项2和,最常见的原因是你的目标机器没有安装C ++运行时。 无论你的目标机器上安装C ++运行时,或者使用静态链接, /MT ,构建您的DLL时,这样你就不需要重新分配的运行时间。

也许,你开发的DLL的机器上,你已经安装了C ++编译器和安装运行时为您服务。 在您的目标机,其中代码失败了,你还没有安装编译器,因此运行时不存在。



Answer 2:

哪个编译你用建库? 也许有些需要的库文件丢失? 您可以检查哪些依赖库具有的Dependency Walker(http://www.dependencywalker.com/)?



文章来源: WindowsError: [Error 126] when loading a DLL with ctypes