domingo, 17 de abril de 2011

Programas compilados con g++ ahora piden una DLL


Si son de programar en C++ y usar el compilador de GNU g++ en Windows, a lo mejor les haya pasado que después de actualizarlo, sus programas ahora para ejecutarse les pidan una DLL llamada libstdc++-6.dll, cosa que antes no sucedía.
Al arrancar el ejecutable les muestra el siguiente mensaje de error:

"Error al iniciar la aplicación porque no se encontró libstdc++-6.dll. La reinstalación de la aplicación puede solucionar el problema."

El problema está a partir de la versión 4.5 de g++. Antes de esta versión, g++ enlazaba esta librería (libstdc++) estáticamente a los ejecutables compilados, por lo que ese error nunca aparecía. A partir de la versión 4.5, ya no se comporta de esta manera y enlaza la librería de forma dinámica, por lo que es necesaria esa DLL cuando no se está ejecutando el programa con el directorio de g++ como directorio de trabajo.
Para solucionarlo, pueden copiar la mencionada DLL a la carpeta del sistema de Windows, o incluir el directorio de g++ en la variable PATH del sistema.
Si quieren tener el comportamiento anterior de g++, es decir enlazar la librería estáticamente, compilen sus programas con la opción

-static-libstdc++

y ya no dependerán de esa DLL.

2 comentarios:

  1. Me sirvió tu post, y 2 años después de haber sido escrito! Tuve que bajar todo el MinGW (que ni sé que es en realidad) y buscar la librería en conflicto y copiarla a la carpeta del sistema de Windows. Gracias!

    ResponderEliminar
  2. Cuatro años después es de las pocas respuestas claras que se pueden conseguir respecto al tema. Gracias!

    ResponderEliminar