ホームページ > バックエンド開発 > Python チュートリアル > DLL のロード時に Python ctypes コードが OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません をスローするのはなぜですか?

DLL のロード時に Python ctypes コードが OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません をスローするのはなぜですか?

Susan Sarandon
リリース: 2024-11-28 19:47:14
オリジナル
578 人が閲覧しました

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

LoadDLL Python エラー: Ctypes Attempting to Load DLL Throws OSError: [WinError 193] %1 is not a valid Win32 application

このエラーは、基礎となるエラー コードに起因しますERROR_BAD_EXE_FORMAT として知られ、Windows が解釈するものをロードしようとすると発生します。実行可能ファイルですが、実際には実行可能ファイルではありません。さまざまなシナリオでこの問題が発生する可能性があります。

アーキテクチャの不一致

このエラーの主な原因は、DLL をロードしようとするプロセスと DLL 自体の間のアーキテクチャの不一致です。具体的には、次の状況でエラーが発生する可能性があります。

  • 64 ビット プロセスが 32 ビット DLL をロードしようとしている
  • 32 ビット プロセスが 64 ビット DLL をロードしようとしている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 とその依存関係の整合性を維持することで、ctype を使用して DLL をロードするときにこのエラーを回避できます。

以上がDLL のロード時に Python ctypes コードが OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート