c++ - example - replicar mongodb
La inclusiĆ³n de boost:: filesystem produce errores de enlace (2)
Ok, primero, me estoy vinculando a boost_system y boost_filesystem.
Mi compilador es una compilación personalizada de MinGW con GCC 4.3.2
Entonces cuando incluyo:
#include "boost/filesystem.hpp"
Obtengo errores de enlace tales como:
../../libraries/boost/libs/libboost_system.a(error_code.o):error_code.cpp:
(.text+0xe35)||undefined reference to `_Unwind_Resume''|
../../libraries/boost/libs/libboost_system.a(error_code.o):error_code.cpp:
(.eh_frame+0x12)||undefined reference to `__gxx_personality_v0''|
Lo que después de una pequeña búsqueda que encontré es más común cuando intentas vincular un programa en C ++ con gcc, el compilador GNU C. Pero imprimí el comando de compilación exacto que Code :: Blocks está ejecutando, y definitivamente está enlazando con g ++.
Si hago un comentario sobre esto, todo funciona bien.
¿Algunas ideas? Además, como un lado, ¿alguien sabe de un buen lugar para obtener binarios de Windows para impulsar? El sistema de compilación me está dando problemas, así que estoy usando algunos binarios que vienen con este paquete MinGW personalizado
Binarios de Windows: www.boost.org: consulte la página "Introducción", pero si usa g ++ en MingGW, no los quiere. Una forma simple de entenderlo es que MingGW es como un sistema operativo dentro de un sistema operativo, así que realmente no estás usando Windows. Los que tienes probablemente tengan razón.
Sin embargo, no estoy seguro de lo que está pasando con su código, suena como si los archivos lib no estuvieran enlazando correctamente de alguna manera. Boost nombra sus archivos lib por sí mismos, por lo que no los nombra de manera explícita, pero debe tener los archivos lib para aumentar en la ruta correcta (y asegúrese de que estén instalados / construidos también, lo que podría no ser). No estoy seguro de cómo ponerlos en el camino correcto con g ++ porque no he usado MingGW, solo he usado boost con Visual Studio.
Ok, encontré el problema. Es un poco complicado.
GCC se está convirtiendo gradualmente más compatible con IS 14882 en la rama 4.x. A medida que avanzan, eliminan las características objetadas que no son estándar.
Mientras que 4.1.x parece tenerlos en desuso y no eliminarlos, parece que 4.3.x realmente los ha quitado. Lo que esto significa es que 4.3.xy mayor tienen algunos problemas de compatibilidad con versiones anteriores con cosas compiladas en la rama 3.x (que usó las características obsoletas y ahora eliminadas)
Estaba usando una combinación mixta de binarios que se habían compilado con GCC 3.x, 4.1.x y 4.3.x, así que no importa cuál use, obtuve un error similar, porque al menos un binario estaba enlazando a era incompatible con el compilador que estaba intentando en este momento.
Ahora estoy usando GCC 4.1.2 y la mayoría de mis binarios han sido compilados con él. Todavía estoy usando binarios de 3.x, por lo que aún no me estoy actualizando a 4.3.x.
Espero que haya sido menos confuso de leer que de escribir ...
Esta parece ser una buena publicación que trata algunos de los problemas como estaban con 4.1.x.