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 |
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 error 0xc000007b
Buscando y buscando en internet di con la solucion, el error es culpa del archivo¿? COMCTL32.DLL 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
Para una libreria dinamica DLL:
mt.exe -manifest MyLibrary.dll.manifest -outputresource:MyLibrary.dll
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
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:
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!
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
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.
Publicar un comentario