2016-01-05 127 views
1

我想加載與ctypes的dll窗體python代碼,它引發了一個錯誤。無法加載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 <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 *。

+1

這個線程你也許有用: http://stackoverflow.com/questions/7586504/ python-access-dll-using-ctypes – West

回答

0

check.dll可能具有文件夾,以便之前使用它,使用可能會先打電話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) 
+0

我試過了,它沒有工作 –

+0

嘗試在check.dll上使用微軟的'depend.exe'工具來查看是否有任何問題,可以在這裏找到[http](http ://www.dependencywalker.com/) –

+0

還要確保你沒有任何32位和64位的問題。 –