WindowsError:用ctypes加载DLL时出错

这适用于Python 2.7的Windows 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,并input完整的path名称

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

有和没有“.DLL”扩展名。 没有任何工作

错误126是您无法找到依赖的DLL时得到的。 有两个明显的原因:

  1. 您的DLL没有被找到。
  2. 您的DLL依赖于其他无法找到的DLL。

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

所以这留下选项2,最常见的原因是你的目标机器没有安装C ++运行时。 无论是在目标机器上安装C ++运行时,还是在构建DLL时使用静态链接/MT ,以便不需要重新分配运行时。

可能在您开发DLL的机器上,您已经安装了一个C ++编译器,并为您安装了运行时。 在目标机器上,代码失败的地方,你没有安装编译器,所以运行时不存在。

你使用哪个编译器来构建库? 也许一些需要的库丢失? 你可以用Dependency Walker(http://www.dependencywalker.com/)查看这个库的依赖关系吗&#xFF1F;