| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 28/06/2012 12:01 pm | | | Título: Obtener Ejecutable (Visual Studio) |
| Creo que no hay mucho qué explicar. El título es directo... Yo he visto que cuando ejecutan algún código en Dev-C++, automáticamente se genera un .exe en la carpeta donde se encuentra el proyecto. Sin embargo, cuando yo presiono "Depurar", eso no ocurre (o por lo menos eso creo). De paso, si es posible, quisiera que me expliquen un poco si hay diferencia entre dichos términos: depurar, ejecutar... y, compilar, debug. |
| | Volver arriba | |  | Sorancio

Registrado: 29 May 2009 Mensajes: 1157 Ubicación: España
| Publicado: 28/06/2012 12:21 pm | | | Título: |
| El ejecutable está en la carpeta bin/Debug de tu proyecto. Simplemente tienes que ir a donde está y ejecutarlo. No me preguntes donde tienes el proyecto ni como mirarlo: se supone que ya lo sabes porque es lo primero que te piden xD.
Ahora, sobre lo de los términos:
DEPURAR
Es el proceso de buscar y corregir errores en un programa. Debug es la palabra técnica anglosajona y básicamente viene de "bug" que es un "bicho" y es como se le llamaron a los errores de software.
EJECUTAR
A la práctica es hacer que "algo" funcione: sea un programa, un script, una instrucción de un lenguaje...Técnicamente es muy complejo ejecutar algo, así que déjalo para cuando tengas muchísima más práctica.
COMPILAR
Es el proceso de generación de un archivo binario a partir de un código fuente. No tiene por qué ser ejecutable: puede ser un bytecode, una librería o otro lenguaje intermedio. _________________ Mi página web (en inglés): |
| | Volver arriba | |  | Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 03/07/2012 12:00 pm | | | Título: |
| Yo había buscado en la carpeta "Debug" de cada uno de los proyectos pertenecientes a una misma solución y no hallaba nada ... Y ahora, curiosamente, en la carpeta "Debug" dentro de la carpeta de la solución he encontrado todos los ejecutables de los proyectos pertenecientes a dicha solución. ** En Visual Studio, al crear un proyecto, se debe registrar un nuevo nombre para la solución (hasta ahora no entiendo muy bien el porqué), o añadirlo a una solución ya existente con la opción "Agregar a solución". ** Los nombres para las soluciones vienen a representarse por una carpeta más genérica, pues incluye las carpetas de los proyectos que se agregaron a ella.
En el VS, para probar si el código es correcto (por lo menos sintácticamente), debo dar clic a "Depurar". Eso (según lo entendido), estaría referiéndose a "Corregir errores". Y otra pregunta sería... si Debug es un proceso para corregir errores, luego de ver que mi código es el correcto y cumple todas mis espectativas, ¿qué sigue? Y... ¿Cada vez que presiono "Depurar" se genera un ejecutable? Si es así, ¿podría decirse que cada vez que depuro, estoy compilando?
Recuerdo que una vez un profesor le dijo a un tipo del aula: "Me dijiste que tenías trabajo y no sé que estás haciendo". Entonces el sujeto le dijo: "Sí. Sólo estaba buscando información... pero ahora compilo". Profesor: "¿Y qué vas a compilar?". Tipo cuasi-alumno: "Un programa". Y muchos rieron y dijeron: "¿Y qué más?". Pero ahora con esto que acaba de aclararme usted, entiendo que no sólo programas (supongo que son "ejecutables") pueden compilarse. |
| | Volver arriba | |  | | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 03/07/2012 5:30 pm | | | Título: |
| Se puede evitar el uso del IDE y compilar mediante linea de comandos con cl.exe, por desgracia tiene sus inconvenientes (la pagina sobre el en MSDN no aclara el tema completamente).
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 05/07/2012 10:02 am | | | Título: |
| Hola,
Mientras estás desarrollando un proyecto, va muy bien que el combobox de la configuración esté en debug.
De hecho, aún no entiendo por qué enseñan los lenguajes de programación en tantos sitios y nadie enseña a estructurar los programas bien, a codificar minimizando los errores y a depurar.
Debería de haber cursos para aprender el manejo de los depuradores, según mi opinión.
No te imaginas la cara que me queda cuando alguien pone un programa de más de 100 líneas que da errores y dice que no sabe por qué punto está el error.
Cuando has acabado de desarrollar y probar el programa, cambias la opción del combo box a "Release" (entrega) y tu programa estará acabado, dependerá de las dlls correctas, tendrá un tamaño menor, y estará probado.
En cuanto a lo de las soluciones en visual studio:
Si deseas crear una dll, tendrás que crear un ejecutable para irla probando. Creando los dos proyectos en la misma solución, se generarán los dos (la dll y el exe) en la misma carpeta. Ni que decir tiene que también va bien si la solución está formada por más proyectos.
Espero que sea útil. _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 05/07/2012 4:47 pm | | | Título: |
| | untio escribió: | | De hecho, aún no entiendo por qué enseñan los lenguajes de programación en tantos sitios y nadie enseña a estructurar los programas bien, a codificar minimizando los errores y a depurar. |
Uno de los problemas comunes y que ejemplifica Masakre es ir por lo complicado cuando debería ser (ir por) lo sencillo.
En su caso debe aprender:
* Tipos de aplicaciones (consola, ventana, DLL) y sus detalles en MS Windows. * El IDE mas completo y complicado (Visual Studio) * El lenguaje C++.
Seria mas fácil si, ya con un buen manejo general del SO se pasara al lenguaje C++ (de la forma mas sencilla, por ejemplo mediante linea de comandos) y solo entonces se pasa a aprender el IDE. No es lo mismo pelearse con uno que con tres.
En cuanto a la mala enseñanza de un lenguaje hay un montón de factores como malos planes de estudios, profesores mediocres, etc.
Un paliativo es siempre enseñar siguiendo las buenas costumbres, con ello los errores se reducen. El depurador pienso que es lo ultimo a enseñar, ya con un manejo intermedio del lenguaje.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | | Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 05/11/2012 8:55 pm | | | Título: |
| Discúlpenme si no es muy correcto responder a este tema que tiene cierta antiguedad (muchas veces me dijeron que no haga esto, en otros foros, y aún no entiendo por qué).
Muchas de las cosas que mencionan las desconozco totalmente, y voy a encargarme de ellas en cuanto acabe este ciclo, por lo menos para fortalecer estas ideas vagas que tengo.
Bueno, sucede que un compañero me pidió que cree un programa que resuelva derivadas, que derive. Aunque no es muy complejo (sólo es útil para polinomios) me parece bien y he tratado de pasarle el .exe que se generó automáticamente en la carpeta de mi proyecto (Visual Studio).
Para mi sorpresa, cuando iba a probar junto con él el ejecutable en una cabina cualquiera, el .exe no se ejecutaba correctamente. Decía que faltaba cierto DLL, y lo descargué de internet, pero nuevamente lo mismo. Entonces suponiendo que eran bastantes dejé de descargarlos.
Ahora que he vuelto a revisar este tema veo que untio justamente hablaba de ellos, pero no sé cómo obtener las DLL para mi .exe . . . y además quisiera que todo (si es posible) pertenezca a un único archivo (me refiero al ejecutable y sus respectivas DLL).
No entendí muy bien eso de crear dos proyectos en paralelo 
Gracias de antemano. |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 06/11/2012 3:42 am | | | Título: |
| Hola,
Lo primero que hay que saber para resolver las dependencias es qué entorno has usado para crear el ejecutable y en qué sistema operativo.
Estaría muy bien que indicases qué dll es la que falta.
Saludos. _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 06/11/2012 6:53 pm | | | Título: |
| Bueno, he usado Visual Studio, y he hecho esto en Windows 7 (64bits). En realidad yo puedo ver el .exe fuera del programa, es decir, no necesito abrir el .cpp en Visual Studio y darle a compilar, sólo abro el archivo .exe que se ha generado en una carpeta del proyecto. El problema ha sido que, llevando este .exe a un ordenador cualquiera (una cabina de internet), no se ejecuta correctamente, diciendo que falta X.dll Si lo descargo de internet nuevamente no se ejecuta y me dice que falta Y.dll Entonces me gustaría saber cómo hacer para que no ocurra esto, y de una manera (digamos) formal. Me refiero a que estar descargando los DLL uno por uno según me indique no es muy bueno. |
| | Volver arriba | |  | | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 09/11/2012 9:17 am | | | Título: |
| Hola,
Hace años, si querías usar un programa que requería una dll de Visual c++, sólo tenías que copiarla en system32.
El asunto es que ahora, has de descargarte el instalador de lo que llaman redistributable y, por curioso que te parezca, hay uno para cada versión de Visual studio.
Sólo has de buscar "Visual c++ redistributable" en google para que aparezca una lista.
Eso si tu programa está compilado en versión "Release". Si está compilado en modo debug, el usuario va a necesitar instalar Visual Studio.
Otro tema son los 32 y 64 bits. Si compilas en modo 64 bits, tu programa sólo funcionará en máquinas de 64 bits. Si lo haces en modo 32 bits, tu programa funcionará en máquinas de 32 bits y, a través de WOW, en máquinas de 64 bits.
Saludos. _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 14/11/2012 2:03 pm | | | Título: |
| ¿Eso quiere decir que de todos modos (incluso si se compiló en versión release) toda persona que quiera acceder al .exe de algún programa sencillo que haya hecho (yo) en Visual Studio deberá realizar descargas?
Yo sé que los programas que escribo no son nada complejos, pero de todos modos, si quiero que alguien lo vea, ¿cómo podría enviárselo? Es decir, me gustaría saber qué DLLs son necesarios para el .exe que he generado y cómo empaquetarlos para que el usuario sólo descargue cierto fichero (o varios si es necesario) que se pueda ejecutar y no requiera que el usuario mismo descargue las librerías, o que tenga que colocarlas en la carpeta system32. |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 16/11/2012 3:52 am | | | Título: |
| Hola de nuevo,
Personalmente, uso Visual Studio 2005 porque se supone que la mayoría de los sistemas posteriores tienen su dll instalada.
Yo sí que hago programas complejos y es una puñeta depender de las dlls. Pero si quieres algo avanzado en windows has de usar Visual C++.
Si te interesa ver las dependencias de tu programa puedes descargar "Dependency walker" desde:
http://www.dependencywalker.com/
Y, hasta donde yo sé, el compilador que crea ejecutables que necesitan menos dependencias es Open watcom, descargable desde:
Espero que te sea de ayuda. _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | | Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 16/11/2012 6:19 pm | | | Título: |
| ¿Cada vez que instalo un programa, el instalador se encarga de agregar las DLLs necesarias en el directorio system32? Recuerdo haber usado algunas aplicaciones pequeñas, que sólo las descargaba en .zip, las descomprimía y uno de los archivos extraídos era el .exe y sin agregar DLLs funcionaba todo perfectamente. Quisiera saber cómo hacer eso. Es decir, no importa si traen DLLs, pero quizás haya alguna manera de empaquetarlo todo para que el usuario sólo descargue y use. ¿Cómo podría hacer eso? |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 18/11/2012 1:37 pm | | | Título: |
| | Masakre escribió: | | Recuerdo haber usado algunas aplicaciones pequeñas, que sólo las descargaba en .zip, las descomprimía y uno de los archivos extraídos era el .exe y sin agregar DLLs funcionaba todo perfectamente. |
Ese es el caso de aplicaciones que dependen de un numero limitado de DLLs (por ejemplo Kernel32), por ser parte del sistema operativo no es necesario instalarlas.
| Masakre escribió: | Quisiera saber cómo hacer eso. Es decir, no importa si traen DLLs, pero quizás haya alguna manera de empaquetarlo todo para que el usuario sólo descargue y use. ¿Cómo podría hacer eso? |
Depende de la aplicación y las DLLS de las cuales dependa. Las de sistema simplemente están ahí, en cuanto a otras se puede (dependiendo del caso) vincular estaticamente (forman parte del ejecutable).
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | Masakre
Registrado: 06 Jun 2012 Mensajes: 245
| Publicado: 18/11/2012 3:30 pm | | | Título: |
| ¿Y eso de vincular al ejecutable es un tema un poco avanzado? Porque siendo programas tan sencillos los que quiero pasar, no debería ser tan complicado, y no puedo creer que desde ya haya una dependencia hacia DLLs. De seguro que el Visual Studio impone todas estas cosas. Me pregunto si sucederá lo mismo con los que hacen en Code::Blocks. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |