这在使用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并输入完整路径名
"d:\\python\\auxil\\src\\prov_means"
有和没有“.DLL”扩展名。什么都行不通。
答案 0 :(得分:22)
错误126是无法找到从属DLL时获得的错误。有两个明显的原因:
我怀疑选项1是问题,但无论如何我认为我可能会使用该DLL的完整路径来确定。
因此,留下选项2,最常见的原因是您的目标计算机没有安装C ++运行时。在构建DLL时,在目标计算机上安装C ++运行时,或使用静态链接/MT
,这样就不需要重新分配运行时。
也许,在您开发DLL的机器上,您已经安装了C ++编译器并为您安装了运行时。在目标机器上,代码失败,您尚未安装编译器,因此运行时不存在。
答案 1 :(得分:0)
您使用哪种编译器来构建库?也许缺少一些必需的库?您可以使用Dependency Walker(http://www.dependencywalker.com/)查看库具有哪些依赖项?