Problemas con CodeBlocks

Iniciado por niano, 7 Junio 2019, 12:53 PM

0 Miembros y 1 Visitante están viendo este tema.

niano

Hola, buenos días.

Me he instalado el CodeBlocks 17.12 en un Windows 10 hace unos días para crear, principalmente, aplicaciones de consola con C. Resulta que parece que compila bien el código que sea, ya que CodeBlocks lo ejecuta correctamente (supongo que en una especie de simulación o algo así). Sin embargo, cuando le doy directamente al ejecutable que se haya en la carpeta "...\bin\Debug" me sale un cuadro de diálogo cuyo mensaje no entiendo y que dice: "La ejecución de código no puede continuar porque no se encontró libgcc_s_dw2-1.dll. Este problema se puede solucionar reinstalando el programa". Le doy a la única opción, "Aceptar", y todo desaparece.

He desinstalado y reinstalado el CodeBlocks pero la cosa sigue igual. El proyecto está en una carpeta cuyo nombre no tiene espacios que se haya directamente en la raíz del disco duro.

¿Alguien sabe cómo puedo hacer para que el CodeBlocks me genere ese ejecutable correctamente?

Gracias de antemano por las respuestas. Un saludo.

K-YreX

No estoy muy familiarizado con DLLs pero te dejo este link que quizás te ayude. Está en inglés, espero que te sirva, de todas formas es un inglés fácil de entender :-X
https://stackoverflow.com/questions/4702732/the-program-cant-start-because-libgcc-s-dw2-1-dll-is-missing
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

RayR

No es un error. Lo que pasa es que, en los programas de C y C++, la biblioteca estándar (llamada el C/C++ runtime), que contiene las definiciones de funciones estándar, suele no incluirse en el ejecutable, sino que enlaza de forma dinámica (en Windows, un dll). Esto pasa también con Visual C++, por ejemplo, donde los ejecutables generados, necesitan archivos como msvcr*.dll o msvcp*.dll, donde * es un número de versión. Si la computadora donde quieras ejecutar el programa no contiene el archivo correspondiente a la versión de Visual C++ con la que lo compilaste, marcará un error. Vamos, que tu problema no es fallo de Code::Blocks, ni nada por el estilo, simplemente así funciona esto.

En tu caso tienes dos opciones. Una es copiar el archivo que te pide (se encuentra en <carpeta de codeblocks>\MinGW\bin) a una ruta done tu ejecutable pueda verlo, como Windows\system32, lo cual NO recomiendo, o a la carpeta de tu exe. Con eso se arregla.

La otra opción es enlazar estáticamente el runtime, y de esta forma tu ejecutable ya contiene todo ese código, lo cual obviamente incrementará su tamaño, pero eliminas la dependencia de la dll. Esto lo haces de la manera que indican en el link que te pusieron: Project/Build options/Linker settings, y en other linker settings: -static-libgcc. Para C++ también agregar -static-libstdc++.

niano

Hola buenas.

Estupendo!!! Muchas gracias por vuestras respuestas, parece que ya lo he arreglado. He elegido la opción de eliminar la dependencia de la dll ya que quisiera poder ejecutar el programa en otras máquinas. He seguido las indicaciones y parece que ha funcionado.

Muchas gracias y un saludo.

@XSStringManolo

Si quieres que no se vea la consola al abrir el ejecutable también puedes poner: -mwindows es muy útil para programas que no necesites que se muestren en pantalla, como por ejemplo un programa que haga una copia de seguridad de carpetas del escritorio y se cierre sin ninguna opción.

Yo siempre comento todos los ajustes del ide en el código fuente antes de compartirlo es muy de agradecer si alguien que está aprendiendo no le funciona el programa tras compilarlo como funciona en el ejecutable que acompañaba el código.

Código (cpp) [Seleccionar]
/*c++11*/
/*Code::Blocks Version 17.12*/
/*
Other linker settings:
-lmingw32 -mwindows
*/

#include <.....

niano

De acuerdo. Gracias por el consejo.

Saludos.