>>> import ctypes
>>> ctypes.windll.LoadLibrary("c:\tools\depends\depends.dll")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\tools\python271\lib\ctypes\__init__.py", line 431, in LoadLibrary
return self._dlltype(name)
File "c:\tools\python271\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在您的路径中。如果该DLL依赖于不在您路径中的其他DLL,则可能会出现相同的错误。在这种情况下,Windows找不到依赖项。Windows并不擅长告诉你它找不到什么,只是它找不到什么。这取决于你自己。可以在此处找到Windows dll搜索路径: http://msdn.microsoft.com/en-us/library/7d83bc18.aspx
在我的例子中,确保所有需要的dll都在同一个目录中,并对该目录执行os.chdir()操作就解决了这个问题。
我在Win10 32位操作系统中遇到了同样的问题。我通过将DLL从debug改为release版本解决了这个问题。
我认为这是因为调试版本的DLL依赖于其他DLL,而发布版本没有。
当我看到像这样的东西-这通常是因为路径中有反斜杠被转换。
例如-以下操作将失败-因为字符串中的\t被转换为制表符。
有3种解决方案(如果这是问题的话)
a)使用双斜杠。。。
b)使用正斜杠
c)使用原始字符串(在字符串前面加上r
虽然第三个可以工作,但我时常有一种印象,认为它不“正确”,因为原始字符串是用于正则表达式的。多年来,我一直在Python中使用它作为Windows上的路径,没有问题:))
相关问题 更多 >
编程相关推荐