El progtwig no puede iniciarse porque falta libgcc_s_dw2-1.dll

He creado un progtwig simple en C ++ con Code :: Blocks.

Si lo ejecuto desde Code :: Blocks, funciona correctamente; pero si lo ejecuto haciendo doble clic en el archivo ejecutable, aparece una ventana con este mensaje:

El progtwig no puede iniciarse porque falta libgcc_s_dw2-1.dll en su computadora.
Intente reinstalar el progtwig para solucionar este problema.

¿Entonces, cuál es el problema? ¿Qué tengo que hacer para arreglarlo?

Creo que esto es un problema de comstackdor MinGW / gcc, en lugar de una instalación de Microsoft Visual Studio.

libgcc_s_dw2-1.dll debe estar en el directorio bin del comstackdor. Puede agregar este directorio a la variable de entorno PATH para vincular el tiempo de ejecución, o puede evitar el problema agregando “-static-libgcc -static-libstdc ++” a los indicadores del comstackdor.

Si planea distribuir el ejecutable, este último probablemente tenga más sentido. Si solo planea ejecutarlo en su propia máquina, cambiar la variable de entorno PATH es una opción atractiva (mantiene el tamaño del ejecutable).

Actualizado:

En base a los comentarios de Greg Treleaven (ver comentarios a continuación), agrego enlaces a:

[Captura de pantalla de Code :: Blocks “Opciones de comstackción del proyecto”]

[Opciones de enlace GNU gcc]

La última discusión incluye las opciones del enlazador -static-libgcc y -static-libgcc -static-libstdc++ .

En Eclipse, lo encontrará debajo de las propiedades del proyecto> C / C ++ Build> Configuración> MinGW C ++ Linker> Misc

Debe agregarlo a los “indicadores del enlazador” en la parte superior; en ningún otro lugar. Entonces solo reconstruye.

Captura de pantalla de las propiedades de Eclipse

Descubrí que al vincularlos se explota estáticamente el tamaño hasta 1,400kb incluso con optimizaciones. Es 277kb más grande en comparación con simplemente copiar sobre los archivos DLL compartidos. Es 388kb más grande también después de UPXing todo. Muy perder / perder aquí. Simplemente incluya los archivos DLL ya que el usuario final puede decidir eliminarlos o no si los tienen instalados en otro lugar.

Code :: Blocks: agrega ‘-static’ en settings-> compiler-> Linker settings-> Other linker options.

Copie “libgcc_s_dw2-1.dll” a donde estaba make.exe. (Si está utilizando Msys, cópielo en \ msys \ bin) Asegúrese de que la ruta de acceso a make.exe esté establecida en el env. PATH (si make.exe está en una carpeta “bin”, lo más probable es que tenga msys, es \ msys \ bin) Compile, rund, debug, etc. happy.

Encuentra ese dll en tu PC y copialo en el mismo directorio en el que se encuentra tu ejecutable.

Simplemente vaya a Configuración >> Comstackdor y depurador, luego haga clic en la pestaña Configuración del enlazador y vaya al control de edición “Otras opciones del enlazador” y pegue: “-static-libgcc -static-libstdc ++”, no hay opción de indicador del comstackdor en las opciones de Compiler Flags para Code :: Blocks, esa es la manera de resolver ese problema, vine aquí en busca de una solución también y el tipo que publicó sobre “-static-libgcc -static-libstdc ++” dio la idea correcta, y De alguna forma, me di cuenta de que todo estaba por accidente, pero funcionó, ahora se puede hacer clic en el archivo desde Code :: Blocks, funciona desde el escritorio.

Ver también Solucionó mi problema.

Por cierto, ¿es definitivamente la bandera del compiler ? ¿Tal vez el linker es el término más adecuado aquí?

Pude superar esto usando “gcc” en lugar de “g ++” para mi comstackdor. Sé que esta no es una opción para la mayoría de las personas, pero pensé que lo mencionaría como una opción de solución 🙂

Agregue la ruta a esa dll en la variable de entorno PATH.

¿No puedes ponerlo en system32 o algo así como lo haces con otros archivos DLL, para que cada progtwig que intentes ejecutar no tenga ese problema en tu máquina?

Solo necesito el camino donde ponerlo.

Es un poco molesto ponerlo en el directorio cada vez que ejecuto un progtwig que acabo de construir …

Editar: encontré la solución:

Extrae libgcc_s_dw2-1.dll a una ubicación en tu computadora. Le recomendamos que descomprima el archivo en el directorio del progtwig que está solicitando libgcc_s_dw2-1.dll.

Si eso no funciona, deberá extraer libgcc_s_dw2-1.dll en el directorio de su sistema. Por defecto, esto es:

  • C: \ Windows \ System (Windows 95/98 / Me)
  • C: \ WINNT \ System32 (Windows NT / 2000)
  • C: \ Windows \ System32 (Windows XP, Vista, 7)

Si usa una versión de 64 bits de Windows, también debe colocar libgcc_s_dw2-1.dll en C: \ Windows \ SysWOW64 \

Asegúrese de sobrescribir cualquier archivo existente (pero haga una copia de seguridad del archivo original). Reinicie su computadora.

Si el problema persiste, intente lo siguiente:

  • Abra el menú Inicio de Windows y seleccione “Ejecutar …”.
  • Escriba CMD y presione Entrar (o si usa Windows ME, escriba COMMAND)).
  • Escriba regsvr32 libgcc_s_dw2-1.dll y presione Entrar.

Vaya al árbol de MingeW http sourceforge.net. En Inicio / MinGW / Base / gcc / Versión4 (o en cualquier versión que use) / gcc-4 (versión) / encontrará un archivo como gcc-core-4.8.1-4-mingw32-dll.tar.lzma . Extraelo y ve a la carpeta bin donde encontrarás tu libgcc_s_dw2-1.dll y otras dll. Copie y pegue lo que necesita en su directorio bin.

Agregar “-estático” a otras opciones del enlazador resuelve este problema. Estaba teniendo el mismo problema después de probar esto en otro sistema, pero no por mi cuenta, por lo que incluso si no se ha dado cuenta de esto en su sistema de desarrollo, debe verificar que tenga este conjunto si está conectando estáticamente.

Otra nota, copiar la DLL en la misma carpeta que el ejecutable no es una solución, ya que se anula la idea de vincular estáticamente.

Otra opción es usar la versión TDM de MinGW que resuelve este problema.

Trabajando con msys2 he obtenido el mismo error al tratar de ejecutar la versión de lanzamiento de mi proyecto en un entorno de depuración. La solución para mi problema es obvia: use ejecutable con símbolos de depuración.