このエラーは、基礎となるエラー コードに起因します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 とその依存関係の整合性を維持することで、ctype を使用して DLL をロードするときにこのエラーを回避できます。
以上がDLL のロード時に Python ctypes コードが OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。