Cette erreur provient du code d'erreur sous-jacent connu sous le nom d'ERROR_BAD_EXE_FORMAT, qui se produit lorsque Windows tente de charger quelque chose qu'il interprète comme un exécutable mais ne l'est pas en réalité. Divers scénarios peuvent conduire à ce problème.
L'une des principales causes de cette erreur est une incompatibilité d'architecture entre le processus tentant de charger la DLL et la DLL elle-même. Plus précisément, les situations suivantes peuvent déclencher l'erreur :
Au-delà des inadéquations d'architecture, d'autres Certains facteurs peuvent contribuer à l'erreur « Application Win32 non valide » lors du chargement d'une DLL :
Pour résoudre cette erreur, assurez-vous que :
Pour illustrer le problème d'inadéquation de l'architecture, un simple programme C avec une DLL est utilisé :
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")
L'exécution de ce code dans un interpréteur Python 32 bits déclenchera l'erreur « pas une application Win32 valide ». À l'inverse, le chargement de la DLL 32 bits réussira.
En assurant un bon alignement de l'architecture et en maintenant l'intégrité des DLL et de leurs dépendances, on peut éviter cette erreur lors du chargement de DLL avec des ctypes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!