• Viernes 8 de Noviembre de 2024, 19:01

Autor Tema:  Recompilar.. :(  (Leído 2369 veces)

emilianoo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Recompilar.. :(
« en: Jueves 20 de Septiembre de 2007, 04:48 »
0
Hola, el tema es el siguiente.. hice un pequeño programa en C en mi PC con Dev-C++ bajo Windows XP, bueno, todo fue de 10, hasta que llevé ese mismo programa a una PC de un amigo, también con Windows XP y hasta el mismo microprocesador y todo, y comenzó el problema,  el programa crashea con el clasico "el programa ha efectuado una operacion incorrecta y debe cerrarse, blablabla"... el error lo dio una librería del sistema, no recuerdo el nombre, pero lo dio una librería (dll) dentro de /windows/system32/, ahora bien, instalé Dev-C++ en la maquina de mi amigo, volvi a compilar el programa sin tocar absolutamente nada, y el programa funcionó correctamente... bien, mi pregunta es entonces:
¿En que cambió mi ejecutable al recompilarlo en la PC de mi amigo?..
Es claro que el ejecutable ha cambiado, ya que uno da error y el otro no...
la librería que daba error no la he tocado, simplemente he recompilado el programa, sin modificar absolutamente nada, y con exactamente la misma versión del compilador con el que compile en mi pc..
¿Que es lo que cambio en el ejecutable al recompilarlo en la casa mi amigo?.. Teniendo en cuenta que es exactamente el mismo compilador, las mismas librerias de importacion (ya que vienen con Dev-C++), el mismo sistema operativo, la misma arquitectura y exactamente la misma entrada de datos.. francamente no entiendo que puede estar pasando... lo quiero hacer portable y no puedo..

Supongamos por un momento que ésta DLL que generó el error no es la misma que en mi PC. o sea, que mi amigo tiene una versión diferente de la misma librería, en ese caso... ¿¿¿Como el compilador fue capaz de darse cuenta de ésto para crear el ejecutable correcto???

Saludos.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #1 en: Jueves 20 de Septiembre de 2007, 08:10 »
0
Es una historia muy larga, lo que tendrias que haber hecho es depurar el programa y ver exactamente en donde se producia el error. ¿Estas seguro de haber usado EXACTAMENTE lo mismos fuentes? Que el error se produjera en una libreria del sistema no indica nada, hay un 99% de probabilidades que fuera culpa del ejecutable.

Para hacer un ejecutable que puedas usar en cualquier Windows (gama NT) lo que tenes que hacer es asegurarte de que no tenes dependencias de terceros sino solo dependencias del S.O. que vengan instaladas por defecto. Para ver esas dependencias podes usar el: Dependency Walker.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

emilianoo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #2 en: Jueves 20 de Septiembre de 2007, 09:09 »
0
El problema es el ejecutable, eso es claro. Da el error en la llamada a la librería, pero al recompilar y generar un nuevo ejecutable en este S.O.  ya el error no se produce.. es claro que el executable creado nuevamente en el PC, no es exactamente el mismo que el que yo compilé en mi PC, aunque usando exactamente el mismo source (SI, segurísimo).. ya que el nuevo ejecutable funciona bien, y el anterior NO, o sea.. la duda que me surge es ¿Por qué Dev-C++ crea un ejecutable diferente en mi pc que en la de mi amigo con exactamente el mismo codigo? (o sea, está creando dos ejecutables diferentes, dependiendo de la PC donde me encuentre y esto es lo que quiero entender por qué!)..
Cuando valla de mi amigo el viernes voy a depurar paso a paso el programa y ver exactamente donde se produce el error..

Otra cosa, utilizé librerias de sistema, solamente, de hecho el programa al recompilarlo en la maquina donde se ejecutará, luego funciona correctamente, así que no es que falte alguna librería o algo por el estilo..., lo único que se me ocurre aquí es que al instalar Dev-C++, éste instale alguna dll en el directorio del systema.. lo cual no lo habia pensado.. y esa libreria es utilizada por el programa.. con lo cual mi afirmacion anterior "utilizé librerias de sistema, solamente" es falsa.. pero solo si Dev-C++ instala alguna dll en el directorio del sistema.. ya veré el viernes.. ya que tampoco probé mi programa luego de haber instalado Dev-Cpp en la PC de mi amigo.. solo lo ejecute antes, dio error, recompilé, y andubo.. y no me detuve a ver porque me corria el tiempo... y también chekeare con el programa que me has pasada... gracias..

Saludos.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #3 en: Jueves 20 de Septiembre de 2007, 09:53 »
0
Cita de: "emilianoo"
El problema es el ejecutable, eso es claro. ... Cuando valla de mi amigo el viernes voy a depurar paso a paso el programa y ver exactamente donde se produce el error.
Recien ahi podras empezar a encontrar el verdadero problema.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Recompilar.. :(
« Respuesta #4 en: Jueves 20 de Septiembre de 2007, 16:58 »
0
Citar
¿Por qué Dev-C++ crea un ejecutable diferente en mi pc que en la de mi amigo con exactamente el mismo codigo?

Existen solamente 3 respuestas a tu pregunta:
1- Versión distinta de codigo
2- Versión distinta de compilador
3- Parámetros distintos de compilación

Lo que te lleva a: si las tres condiciones anteriores son falsas los ejecutables son iguales, y para comprobarlo existen varios programas que comparan códigos binarios (por ejemplo Ultra Compare <- Parte de Ultra Edit).

El error, lo más probable, es que sea una falla tuya, y el programa funciona mientras no se ejecuten ciertas sentencias (lo que se denomina "Exploit"), o en un caso más dificil, que las dll que utiliza tu programa sean distintas en cada máquina... pero es dificil...

S2

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #5 en: Jueves 20 de Septiembre de 2007, 18:55 »
0
Cita de: "Karman"
Existen solamente 3 respuestas a tu pregunta
Esperemos que asi sea.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

emilianoo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #6 en: Jueves 20 de Septiembre de 2007, 21:49 »
0
1- Versión distinta de codigo ---> falso, es exactamente la misma.
2- Versión distinta de compilador ---> falso, es exactamente el mismo.
3- Parámetros distintos de compilación ---> no lo se, pero supongo que son lo mismos ya que no toco nada de las opciones de compilacion, este programa compila con las opciones por defecto.

- Veré si los makefiles generados son iguales.
- Luego aré un checksum de ambos archivos.. para ver si el ejecutable es el mismo o no.
- En caso de que sean ambos ejecutables iguales comprobaré las dependencias con Dependency Walker y veré que no falte nada.
- Y luego les cuento.

Citar
El error, lo más probable, es que sea una falla tuya, y el programa funciona mientras no se ejecuten ciertas sentencias...

La entrada de datos es tambien la misma, así que el código que se ejecuta debería ser el mismo en ambos casos, o sea, el programa tomaría las misma deciciones y ejecutaría las mismas sentencias..

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #7 en: Jueves 20 de Septiembre de 2007, 21:54 »
0
¿Para que hacemos de nostradamus?  ;) Por ahora sin datos exactos solo podemos especular.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

emilianoo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #8 en: Martes 2 de Octubre de 2007, 19:25 »
0
En fin, no era problema de librerías, el programa provocaba un desbordamiento de pila en una makina y en otra makina no, al recompilar se solucionó.. valla uno a saber porqué... pero era eso...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Recompilar.. :(
« Respuesta #9 en: Martes 2 de Octubre de 2007, 19:31 »
0
Cita de: "emilianoo"
En fin, no era problema de librerías, el programa provocaba un desbordamiento de pila en una makina y en otra makina no, al recompilar se solucionó.. valla uno a saber porqué... pero era eso...
Esa no es una explicacion valida realmente  :)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.