[英]WindowsError: exception: access violation or Windows Error 193 when creating a DLL using ctypes from C++ to Python
[英]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,最常見的原因是您的目標機器沒有安裝C ++運行時。 在目標計算機上安裝C ++運行時,或在構建DLL時使用靜態鏈接/MT
,這樣就不需要重新分發運行時。
也許,在您開發DLL的機器上,您已經安裝了C ++編譯器並為您安裝了運行時。 在目標機器上,代碼失敗,您尚未安裝編譯器,因此運行時不存在。
您使用哪個編譯器來構建庫? 也許缺少一些必需的庫? 您可以使用Dependency Walker(http://www.dependencywalker.com/)查看庫具有哪些依賴項?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.