此錯誤源自於底層錯誤稱為為ERROR_BAD_EXE_FORMAT,當Windows嘗試載入它解釋為可執行檔但實際上是可執行檔時,就會發生這種情況不是。各種情況都可能導致此問題。
此錯誤的主要原因是嘗試載入 DLL 的進程與 DLL 本身之間的體系結構不符。具體來說,以下情況可能會觸發錯誤:
除了架構不匹配之外,其他因素也可能導致載入DLL時出現「不是有效的 Win32 應用程式」錯誤:
要解決此錯誤,請確保:
為了說明架構不匹配問題,使用了一個帶有DLL 的簡單C 程式:
import ctypes as cts import os import sys from enum import Enum class DLL(Enum): LIB_X64 = cts.CDLL("lib_x64.dll") LIB_X86 = cts.CDLL("lib_x86.dll") # Attempt to load the 64-bit DLL in a 32-bit Python process try: dll_x64 = DLL.LIB_X64 except OSError: print("DLL loading failed due to architecture mismatch")
在32 位元Python 解釋器中執行此程式碼將觸發「不是有效的Win32 應用程式」錯誤。相反,載入 32 位元 DLL 將成功。
透過確保正確的架構對齊並維護 DLL 及其相依性的完整性,可以在使用 ctypes 載入 DLL 時避免此錯誤。
以上是為什麼我的 Python ctypes 程式碼在載入 DLL 時會拋出 OSError: [WinError 193] %1 不是有效的 Win32 應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!