No ver este blog con el protocolo https:


Si vas a copiar

.. y pegar este post en tu web o blog personal, por favor te pido que coloques el link del post de donde lo copiastes:

Fuente:

Solucion al: Error de la aplicacion 0xc000007b

diciembre 05, 2011 3 comentarios:
OJO!
esto NO es una solucion para el pantallazo azul con ese mismo codigo, AQUI puedes encontrar la "posible" solucion pero esta en ingles

Mensaje de error al ejecutar el programa
Si haz compilado un programa con wxWidgets (solo la version 2.9.x soportan 64bits) para la arquitectura de 64bit usando el compilador de Visual Studio pero compilando dicho programa desde otra IDE como por ejemplo: DialogBlocks, wxDev-C++, etc... en mi caso he usado en este ejemplo el DialogBlocks 4.40

No hay mensaje de error en la compilacion ni del vinculador (link.exe), la compilacion es perfecta pero cuando ejecutas el programa te aparece el dichoso error 0xc000007b

Buscando y buscando en internet di con la solucion, el error es culpa del archivo¿? COMCTL32.DLL o mas bien culpa del Windows(si vamos mas atras es culpa de Microsoft) que no carga la version 64bits de dicho DLL, como lo muestra esta imagen de la dependencias del programa compilado en 64bits usando el programa Dependency Walker


Dependency Walker te dice que archivos son cargados por los programas

Como pueden ver en la imagen el archivo COMCTL32.DLL que se carga es la version x86/32bits y y los demas archivos dependendientes son de 64bits

En Visual Studio se encarga de incrustar el archivo manifest que es, el que se encarga de "decirle" al ejecutable de 64bits que cargue el archivo COMCTL32.DLL en su version de 64bits

Pero como dije anteriormente si usas un IDE que no es Visual Studio pero usas su compilador (cl.exe, link.exe, nmake.exe), hasta los momentos no he podido incrustar el archivo manifest ya sea pasando un parametro al vinculador (link.exe) o usando el Makefile.vc (en el link muestran como hacerlo con un makefile pero no me ha dado resultado :(

Por los momentos se puede hacer usando un archivo .bat que llame al archivo mt.exe, como indican aqui

Si no está realizando una generación incremental (/INCREMENTAL:NO), puede incrustar directamente el manifiesto utilizando una línea de comandos similar a la siguiente como paso posterior a la generación:

Para un ejecutable EXE:

mt.exe -manifest MyApp.exe.manifest -outputresource:MyApp.exe;1


Para una libreria dinamica DLL:

mt.exe -manifest MyLibrary.dll.manifest -outputresource:MyLibrary.dll;2


El ejecutable mt.exe esta en el directorio Bin\x64 de el Microsoft SDKs, este es el contenido del archivo manifest.bat que tengo en el directorio ejecutable:


"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\mt.exe" -manifest wx64.exe.manifest -outputresource:wx64.exe;1


Y ya luego el programa se ejecuta como debe ser:




WX64.rar es el proyecto de ejemplo

La version wxWidgets que use fue la 2.9.2 compilado con la solucion wx_vc7.sln que esta en el directorio build\msw con unicode, estatico, release, 64bits, de todas maneras en el makefile veras las opciones y recuerda editar los directorios


Publicado en tttony.blogspot.com

Publicar un comentario

3 comentarios:

Anónimo dijo...

hola, la verdad q no entiendo mucho de pc y perdon por la ignorancia, te cuento el problema q tengo. compre una pc nueva hace poco, tenia el xp, la formatie y le instale el w7 ultimate, le instale un juego al cual jugaba a lo mas bien con el xp, el fifa 14, cuando lo ejecuto, me dice q me falta msvcp.100dll,busque el dll y lo puse en system32 y syswow64, dsp de eso me pide el msvcr.100dll, hice lo mismo y cuando ejecuto el juego me tira el error 0xc000007b, nose q mas hacer, espero se entienda y espero puedas ayudarme. gracias!

tttony dijo...

Seguro que debes instalar las librerias de VC++, normalmente se instala al instalar el juego pero he visto casos en el que no es instalado

Busca en el DVD de instalacion un archivo llamado "vcredist_x86.exe" o "vcredist_x64.exe", si no esta (aunque deberia) busca en internet, aunque depende de cual necesite el juego, puedes mirarte el manual de juego

Jonnathan dijo...

Yo hice una aplicacion en mi pc con visual studio 2012, usando windows 7 de 64, y en mi maquina se ejecuta normal, pero al pasar la aplicacion, incluso el proyecto completo a la pc de mi companero, sale el bendito error 0xc000007b y eso que tenemos el mismo sistema operativo y el mismo visual studio.

Buscar en el Blog

PUBLICIDAD