簡體   English   中英

WindowsError:[錯誤126]加載帶有ctypes的DLL時

[英]WindowsError: [Error 126] when loading a DLL with ctypes

這在使用Python 2.7的Windows 7上運行良好:

lib = ctypes.cdll.LoadLibrary('prov_means')
provmeans = lib.provmeans  

庫prov_means.DLL在我的工作目錄中。 它導出一個簡單的,獨立的C函數provmeans(),沒有依賴。

當我在Windows XP和Python 2.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復制到Windows \\ System32並輸入完整路徑名

"d:\\python\\auxil\\src\\prov_means"

有和沒有“.DLL”擴展名。 什么都行不通。

錯誤126是無法找到從屬DLL時獲得的錯誤。 這有兩個明顯的原因:

  1. 您的DLL未找到。
  2. 您的DLL依賴於無法找到的其他DLL。

我懷疑選項1是問題,但無論如何我認為我可能會使用該DLL的完整路徑來確定。

因此,留下選項2,最常見的原因是您的目標機器沒有安裝C ++運行時。 在目標計算機上安裝C ++運行時,或在構建DLL時使用靜態鏈接/MT ,這樣就不需要重新分發運行時。

也許,在您開發DLL的機器上,您已經安裝了C ++編譯器並為您安裝了運行時。 在目標機器上,代碼失敗,您尚未安裝編譯器,因此運行時不存在。

您使用哪個編譯器來構建庫? 也許缺少一些必需的庫? 您可以使用Dependency Walker(http://www.dependencywalker.com/)查看庫具有哪些依賴項?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM