这适用于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,最常见的原因是你的目标机器没有安装C ++运行时。 无论是在目标机器上安装C ++运行时,还是在构建DLL时使用静态链接/MT
,以便不需要重新分配运行时。
可能在您开发DLL的机器上,您已经安装了一个C ++编译器,并为您安装了运行时。 在目标机器上,代码失败的地方,你没有安装编译器,所以运行时不存在。
你使用哪个编译器来构建库? 也许一些需要的库丢失? 你可以用Dependency Walker(http://www.dependencywalker.com/)查看这个库的依赖关系吗?