Error de tiempo de ejecución (carga DLL) con aplicaciones WIN32 en el sistema X64, mientras compila 0K

StackOverflow https://stackoverflow.com/questions/5372565

Pregunta

Originalmente diseñé una aplicación Win32 en Win7 32bits, con VC9.0. Recientemente actualicé a Win7 64 bits e intenté construir+ejecutar la aplicación anterior.

El edificio funciona bien (aplicación Win32), pero en tiempo de ejecución recibo el error [...] ha salido con el código -1073741701 (0xc000007b)".

Supongo que estos resultados de la carga de una versión de 64bits de una DLL de 32bits [previsto].

Las dependencias específicas para este proyecto son: sdl.lib sdlmain.lib sdl_ttf.lib opengl32.lib glu32.lib wininet.lib

SDL y SDL_TTF están solo en la versión de 32bits. Supongo que Visual Studio es lo suficientemente inteligente como para obtener los archivos OpenGL y Glu lib en syswow64 mientras solicito una aplicación Win32.

¿Podría ser por Wininet? ¿O cometí un error?

Gracias,

¿Fue útil?

Solución

Parece que está cargando una DLL de 64 bits en un proceso de 32 bits o viceversa. Así es como haría rastrear la DLL ofensiva.

El primer paso es ejecutar dumpbin.exe (use un símbolo del sistema VS para obtenerlo en la ruta) en el ejecutable para garantizar que la arquitectura sea lo que espera: dumpbin.exe /headers foo.exe. En la salida del encabezado del archivo, debe ver un valor de "máquina" de "x86" o "x64". En la salida de encabezado opcional, debe ver una magia de "PE32" (para x86) o "PE32+" (para x64).

El siguiente paso es ejecutar el Walker de dependencia apropiado, disponible en www.dependencywalker.com, dependiendo de la arquitectura (x86 o x64) del ejecutable. Esta herramienta debe indicarle si localiza una dependencia de las rutas de búsqueda que no es de la misma arquitectura.

Si Dependency Walker encuentra un problema, la solución sería reemplazar la biblioteca ofensiva con una biblioteca de la misma arquitectura o asegurarse de que la biblioteca correcta se encuentre antes de la biblioteca incorrecta en función de las rutas de búsqueda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top