Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Invasores del Espacio

Iniciado por alessandros, 21 de Octubre de 2009, 08:03:17 PM

« anterior - próximo »

alessandros

Hola a todos!!

Tengo terminado un proyecto realizado con Microsoft Visual C++ y Dark GDK. Y funciona a la perfección cuando lo ejecuto desde el Debug, pero cuando trato de realizar un ejecutable con el Release me salta este fallo:

Excepción no controlada en 0x000001fa en Invasores del Espacio.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x000001fa.


¿Sabeís de que puede ser? ¿A lo mejor para hacer el ejecutable se tiene que realizar de otra manera?

Gracias por todo y un saludo!!

Marci

Normalmente si un programa funciona en modo Debug y luego falla al ejecutarlo en modo release es porque tienes variables sin iniciar (casi siempre puntero) en tu programa. En modo debug el compilador inicia a cero estas variables de forma autómatica.

alessandros

Cita de: Marci en 22 de Octubre de 2009, 08:49:58 AM
Normalmente si un programa funciona en modo Debug y luego falla al ejecutarlo en modo release es porque tienes variables sin iniciar (casi siempre puntero) en tu programa. En modo debug el compilador inicia a cero estas variables de forma autómatica.

Ya he inicializado todas las variables y me sigue dando el mismo fallo. Por cierto despues de darle a continuar me salta también este fallo:

No se cargaron símbolos para ningún marco de pila de llamadas. No se puede mostrar el código fuente.

Gracias por la ayuda Marci

Vicente

Lo de los símbolos es para poder depurar, no sé sin en el Visual C++ hay que chequear alguna opción para que se generen o que. Pero tu error suena a lo que dice Marci, algo relacionado con gestión de memoria.

[EX3]

Seria interesante que generaras un archivo de texto con la ruta que sigue el codigo en ejecucion, osease, un log. Colocas llamadas para escribir texto al archivo en plan "puntos de control"  despues de ciertas llamadas, por ejemplo, despues de crear la ventana "Inicializacion de ventana: Ok", despues de inicializar la API grafica "Inicializacion de OpenGL: Ok", y asi en los puntos criticos donde pudiera fallar. De esta forma puedes hacer un depurado en modo release y asi mas o menos saber por donde puede estar petando el codigo.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

alessandros

Esto
Cita de: [EX3] en 22 de Octubre de 2009, 12:20:50 PM
Seria interesante que generaras un archivo de texto con la ruta que sigue el codigo en ejecucion, osease, un log. Colocas llamadas para escribir texto al archivo en plan "puntos de control"  despues de ciertas llamadas, por ejemplo, despues de crear la ventana "Inicializacion de ventana: Ok", despues de inicializar la API grafica "Inicializacion de OpenGL: Ok", y asi en los puntos criticos donde pudiera fallar. De esta forma puedes hacer un depurado en modo release y asi mas o menos saber por donde puede estar petando el codigo.

Salu2...

Estoy en ello, gracias.

Por cierto, ¿sabeís si se puede distruibir gratuitamente un videojuego realizado con Visual C++ siendo este una versión TRIAL?
Gracias de nuevo  ;)

[EX3]

Version Trial? Yo pensaba que estabas con el VC++ Express :P

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Vicente

Cita de: alessandros en 22 de Octubre de 2009, 01:35:11 PM
Por cierto, ¿sabeís si se puede distruibir gratuitamente un videojuego realizado con Visual C++ siendo este una versión TRIAL?
Gracias de nuevo  ;)

Habría que ver la licencia, pero como dice EX3 te bajas el Express, lo compilas con ese y listo :p

t-spy

CitarPor cierto, ¿sabeís si se puede distruibir gratuitamente un videojuego realizado con Visual C++ siendo este una versión TRIAL?

Las limitaciones en una versión TRIAL de un compilador suelen estar en sus funcionalidades (tiempo de prueba, opciones bloqueadas...), no en lo que puedes o no hacer con lo que has generado con él. De todas formas, no está de mas leerse bien la licencia por si acaso.

Para evitar problemas yo seguiría el consejo de [EX3]

alessandros

#9
Creo que debo unas respuestas  :):

1- Ya he encontrado el fallo del Release.... era simplemente que en un dbLoadImage, la ruta de la imagen estaba errónea por UNA sola letra que me faltaba. El Debug esta claro que si no encuentra la imagen sigue adelante, pero el Release no. Cosas de la vida....
Aún así, cuando ejecuto el ejecutable de la carpeta Release me salta un error de Windows diciendo que ha encontrado un error en Invasores del Espacio.exe y que tiene que cerrarlo. ¿Hay alguna forma especial para sacar el ejecutable para que yo lo pueda pasar a otros ordenadores y funcione en estos?

2- Tengo el Visual C++ Express Edition.... Juas  :P

Gracias por todos vuestros comentarios y ayuda ^^

Saludos!!

tamat

será tema de rutas, al ejecutarlo desde el visual usa como carpeta base la carpeta donde está el proyecto, al ejecutarlo con el exe usa la del exe (release\)
Por un stratos menos tenso

alessandros

Cita de: tamat en 23 de Octubre de 2009, 12:14:13 PM
será tema de rutas, al ejecutarlo desde el visual usa como carpeta base la carpeta donde está el proyecto, al ejecutarlo con el exe usa la del exe (release\)

Siento la ignorancia pero, ¿entonces dónde cambio la ruta?

alessandros

Termino espero de una vez. Ya encontré lo del último fallo nada importante al fin y al cabo.

Os planteo una duda que tiene que surgir aqui de vez en cuando pero que no la encuentro. He pasado mi proyecto a otro ordenador y me faltan las librerias supuestamente del DirectX (dice que falta el archivo d3dx9_25.dll). ¿Cómo hago para instalarlas en el otro ordenador?

Muchas gracias por toda la ayuda :D

Hechelion

#13
Hay 2 formas, una, es copiar las DLL u OCX junto con el .exe, en ese caso no necesitas registrar ni nada, solo estar seguro que el archivo se encuentra en el mismo directorio que el ejecutable (Ojo, que esto no funciona con todas las librerías ).

La segunda es registrando la librería a mano, la copias por ejemplo en system32 y luego la registrar con "Regsvr32"

Regsvr32 [/u] [/s] <nombre del fichero>

Por ejemplo:
REGSVR32 c:\windows\system\Dao350.dll

[/u] - lo utilizamos cuando queremos "desregistrar" una DLL (o un .ocx en vez de registrarlo).

[/s] - modo "silencioso" - no despliega los mensajes durante la operación.

Lo que te recomiendo es que busques algún programa para empaquetar, ya que estos tienen la opción de instalar las DLL y te evitas hacer el proceso a mano, puedes buscar el programa "Create Install Free" el cual es bastante bueno y tiene una versión 100% funcional y gratuita, te recomendaría también el "SetupFactory" pero este último es de pago.

[EX3]

Cita de: alessandros en 23 de Octubre de 2009, 09:28:27 PM
¿Cómo hago para instalarlas en el otro ordenador?
Como haces tu para jugar en tu ordenador a los juegos que usan DirectX? Pues instalando el paquete de instalacion de las runtime de DirectX ;)

CitarDirectX End-User Runtimes (August 2009)

This download provides the DirectX end-user redistributable that developers can include with their product.

http://www.microsoft.com/downloads/details.aspx?familyid=04AC064B-00D1-474E-B7B1-442D8712D553&displaylang=en

Con DirectX no me andaria con historias de instalaciones personalizadas por que seguro que a parte de las librerias van programas y configuraciones asociadas a esa libreria que te falta pero tendra dependencias de otras tantas mas (ojala fuera tan sencillo y simple como registrar el ActiveX dxvb8.dll de Visual Basic 6.0 :P). Se instala la ultima actualizacion de DirectX disponible y a jugar, asi te evitas andar instalando sublibrerias raras ni complicaciones similares. Lo mas que puedes hacer es incluir el redistribuible en la instalacion de tu juego y que se lance como opcional por el usuario, como hacen cantidad de juegos comerciales a la hora de instarse.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.