我正在尝试使用ctypes加载一个dll格式的python代码,并引发了一个错误。
我的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 <module>
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路径,
或导入ctypes然后写:来自ctypes import *。
答案 0 :(得分:1)
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)