Python WindowsError:[错误126]加载带有ctypes的DLL时
这在使用Python 2.7的Windows 7上运行良好:Python WindowsError:[错误126]加载带有ctypes的DLL时,python,windows,dll,ctypes,Python,Windows,Dll,Ctypes,这在使用Python 2.7的Windows 7上运行良好: lib = ctypes.cdll.LoadLibrary('prov_means') provmeans = lib.provmeans 库prov_means.DLL位于我的工作目录中。它导出一个简单、独立的C函数provmeans(),没有依赖项 当我在WindowsXP和Python2.7上尝试同样的方法时,我得到了 Traceback (most recent call last): File "D:\python
lib = ctypes.cdll.LoadLibrary('prov_means')
provmeans = lib.provmeans
库prov_means.DLL位于我的工作目录中。它导出一个简单、独立的C函数provmeans(),没有依赖项
当我在WindowsXP和Python2.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”扩展名。什么都不管用。您使用哪个编译器构建库?可能缺少一些必需的库?您可以使用Dependency Walker检查库具有哪些依赖项(http://www.dependencywalker.com/)? 当找不到依赖DLL时,会出现错误126。这有两个明显的原因:
这样就可以选择选项2,最常见的原因是目标机器没有安装C++运行时。在目标机上安装C++运行时,或者在构建DLL时使用静态链接,这样就不需要重新分配运行时。
可能,在开发DLL的机器上,安装了C++编译器,并为您安装了运行时。在您的目标计算机上,如果代码失败,则您尚未安装编译器,因此运行时不存在。
谢谢David。这听起来很有道理,因为我用VisualStudio2010 Express在Windows7机器上编译,它不在目标机器上。我按照建议在目标机器上安装了C++运行时并重新启动。不幸的是,同样的错误。您可以在配置文件模式下使用Dependency Walker来检查这一点。但是我会考虑用代码> > MT <代码>重建DLL,只是重复检查它不是引起问题的依赖性。对,只是用/MT重建,现在它在目标上运行。非常感谢!我认为这意味着您可以通过安装re dist来解决这个问题,但是对于一个简单的DLL,/MT
是最简单的选择。它让你的DLL独立运行。这对我很有帮助。只是在谷歌上搜索一下,我就找到了这个帖子,很高兴在你的帮助下,我这么快就找到了解决方案。
"d:\\python\\auxil\\src\\prov_means"