我试图加载一个dll形式的python代码与ctypes,它引发了一个错误。
我的python代码:
import ctypes
from ctypes import *
hllDll = ctypes.WinDLL ("c:\\Users\\saar\\Desktop\\pythonTest\\check.dll")这引发了这个错误:
Traceback (most recent call last):
File "C:\AI\PythonProject\check.py", line 5, in
hllDll = ctypes.WinDLL("c:\\Users\\saar\\Desktop\\pythonTest\\check.dll")
File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found我在谷歌上搜索,我看到的每一篇文章都指导我用两个反斜杠来编写dll路径,或者导入ctype,然后写道: from ctypes import*。
发布于 2016-01-05 16:48:42
check.dll可能在文件夹中有依赖项,因此在使用它之前,use可以首先调用os.chdir要设置工作目录,例如:
import ctypes
import os
os.chdir(r'c:\Users\saar\Desktop\pythonTest')
check = ctypes.WinDLL(r'c:\Users\saar\Desktop\pythonTest\check.dll')通过在路径字符串前加上前缀,可以避免需要两个反斜杠r。
或者,LoadLibraryEx可以通过以下方式使用win32api获取句柄并将其传递给WinDLL,如下所示:
import ctypes
import win32api
import win32con
dll_name = r'c:\Users\saar\Desktop\pythonTest\check.dll'
dll_handle = win32api.LoadLibraryEx(dll_name, 0, win32con.LOAD_WITH_ALTERED_SEARCH_PATH)
check = ctypes.WinDLL(dll_name, handle=dll_handle)微软已经开发了一个DLL依赖关系检查器,名为depends.exe但不幸的是,很久以前就停止了这方面的进一步发展。不过,现在还有其他类似的实用程序可以做同样的事情。这个想法是,如果你试图加载你的DLL,但它需要另一个你没有的DLL来工作,DLL加载将会失败,而不会给出明显的原因。通过使用这些工具,您可以找到问题所在。
Microsoft推荐使用Dependencies它在github上可用。
https://stackoverflow.com/questions/34607082
复制相似问题