> 백엔드 개발 > 파이썬 튜토리얼 > 내 Python ctypes 코드에서 DLL을 로드할 때 OSError: [WinError 193] %1은(는) 유효한 Win32 응용 프로그램이 아닙니다. 오류가 발생하는 이유는 무엇입니까?

내 Python ctypes 코드에서 DLL을 로드할 때 OSError: [WinError 193] %1은(는) 유효한 Win32 응용 프로그램이 아닙니다. 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-28 19:47:14
원래의
624명이 탐색했습니다.

Why does my Python ctypes code throw an OSError: [WinError 193] %1 is not a valid Win32 application when loading a DLL?

LoadDLL Python 오류: DLL 로드를 시도하는 Ctypes에서 OS 오류 발생: [WinError 193] %1은(는) 유효한 Win32 응용 프로그램이 아닙니다.

이 오류는 기본 오류 코드에서 발생합니다. ERROR_BAD_EXE_FORMAT으로 알려진 이 오류는 Windows가 실행 파일로 해석하지만 실제로는 실행 파일로 해석되는 항목을 로드하려고 할 때 발생합니다. 아니다. 다양한 시나리오에서 이 문제가 발생할 수 있습니다.

아키텍처 불일치

이 오류의 주요 원인은 DLL을 로드하려고 시도하는 프로세스와 DLL 자체 간의 아키텍처 불일치입니다. 특히 다음 상황에서 오류가 발생할 수 있습니다.

  • 32비트 DLL을 로드하려고 하는 64비트 프로세스
  • 64비트 DLL을 로드하려고 하는 32비트 프로세스 DLL

손상된 DLL 또는 종속성

아키텍처를 넘어서 불일치, 다른 요인으로 인해 DLL을 로드할 때 "유효한 Win32 응용 프로그램이 아님" 오류가 발생할 수 있습니다.

  • 다운로드 문제, 우발적인 덮어쓰기 또는 파일 시스템 문제로 인해 DLL이 손상되거나 불완전합니다.
  • DLL 종속성이 손상되거나 누락되어 대상을 로드할 때 종속성 트리가 손상됩니다. DLL.

솔루션

이 오류를 해결하려면 다음을 확인하세요.

  • 프로세스 아키텍처가 로드되는 DLL의 아키텍처와 일치합니다(예: 64 -64비트 DLL의 경우 비트 프로세스).
  • DLL 및 해당 종속성이 손상되지 않았습니다. 손상되었거나 누락되었습니다. 손상되지 않았으며 올바른 위치에 있는지 확인하십시오.

사례 연구

아키텍처 불일치 문제를 설명하기 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿