問題:
使用者嘗試在Python 中使用ctypes 載入DLL 時遇到下列錯誤:
OSError: [WinError 193] %1 is not a valid Win32 application嘗試在64 位元上運行32位元應用程式時會出現此錯誤system.
解決方案:
潛在錯誤是ERROR_BAD_EXE_FORMAT (193, 0xC1),當Windows 嘗試載入實際上不是的可執行(PE) 映像時,會發生此錯誤。導致此錯誤的原因有很多:Python 上下文:
CTypes 使用 LoadLibrary 載入 DLL,這可能會導致相同的錯誤。以下是範例:import ctypes import os dll_name = os.path.join( os.path.dirname(__file__), DLL_BASE_NAME + ("dll" if sys.platform[:3].lower() == "win" else "so")) print(f"Attempting to load: [{dll_name}]") dll00 = cts.CDLL(dll_name)如果DLL 包含無效內容,則會出現錯誤:
Traceb (most recent call last): File "code00.py", line 25, in <module> rc = main(*sys.argv[1:]) File "code00.py", line 14, in main dll00 = ct.CDLL(dll_name) File "c:\Install\pc064\Python\Python.07.09\lib\ctypes\__init__.py", line 364, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 193] %1 is not a valid Win32 application
額外獎勵:
DLL也可以依賴其他DLL,如果不滿足依賴關係,可能會導致相同的錯誤。當一個 DLL 在編譯期間連結到另一個 DLL 時,會自動發生此錯誤。
結論:
要避免此錯誤,請確保:
如果發生錯誤,請檢查所涉及 DLL 的依賴關係樹,因為錯誤可能會從依賴關係傳播。此外,使用工具檢查 DLL 的依賴關係。
建議:
在這種特定情況下,安裝並運行 64 位元 Python,因為它具有更廣泛的兼容性.
以上是在 Python 中使用 ctypes 載入 DLL 時,為什麼我會收到「OSError: [WinError 193] %1 is not a valid Win32 application\」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!