이 오류는 기본 오류 코드에서 발생합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!