"Se intentó cargar un programa con un formato incorrecto" incluso cuando las plataformas son las mismas

Resuelto David Brown asked hace 14 años • 27 respuestas

Estoy llamando a funciones desde una DLL no administrada de 32 bits en un sistema de 64 bits. Lo que obtengo es:

BadImageFormatException: se intentó cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)

Al principio, tenía mis proyectos configurados en la plataforma Cualquier CPU, así que los cambié a x86, pero este error continúa ocurriendo. Esa es realmente la única solución que conozco para esto.

Las DLL no están corruptas ni nada por el estilo, porque puedo usarlas con otros programas (para los que no tengo la fuente). Pensé que tal vez no era encontrar dependencia, pero revisé y están todos. Además, ¿no sería un error DllNotFoundExceptionen ese caso?

¿Que más puedo hacer? Y antes de decir "Utilice en su lugar una DLL no administrada de 64 bits", permítame señalar que no existe ninguna. ;)

David Brown avatar Jan 08 '10 04:01 David Brown
Aceptado

Si intenta ejecutar aplicaciones de 32 bits en IIS 7 (y/o en una máquina con sistema operativo de 64 bits), obtendrá el mismo error. Entonces, desde IIS 7, haga clic derecho en el grupo de aplicaciones de las aplicaciones, vaya a "configuración avanzada" y cambie "Habilitar aplicaciones de 32 bits" a "VERDADERO".

Reinicie su sitio web y debería funcionar.

ingrese la descripción de la imagen aquí

bluwater2001 avatar Jan 06 '2011 20:01 bluwater2001

De alguna manera, la casilla de verificación Generar en el Administrador de configuración no estaba marcada para mi ejecutable, por lo que todavía se estaba ejecutando con la versión anterior de Cualquier CPU. Después de solucionarlo, Visual Studio se quejó de que no podía depurar el ensamblaje, pero eso se solucionó reiniciando.

David Brown avatar Jan 08 '2010 01:01 David Brown