Question

D'abord, je fais un lien vers boost_system et boost_filesystem.

Mon compilateur est une la création personnalisée de MinGW avec GCC 4.3.2

.

Donc quand j'inclus:

#include "boost/filesystem.hpp"

Je reçois des erreurs de liaison telles que:

..\..\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'|

Après quelques recherches, je trouve que c’est le plus souvent lorsque vous essayez de lier un programme C ++ à gcc, le compilateur GNU C. Mais j’ai imprimé la commande de construction exacte que Code :: Blocks est en cours d’exécution et qui lie définitivement g ++. .

Si je commente cet élément, tout fonctionne correctement.

Des idées? En outre, en tant que partie, tout le monde connaît-il un bon endroit pour obtenir des fichiers binaires Windows? Le système de construction me pose des problèmes, je me sers donc des fichiers binaires fournis avec ce package MinGW personnalisé

Était-ce utile?

La solution

Ok, j'ai trouvé le problème. C'est un peu compliqué.

GCC devient progressivement plus conforme à la norme IS 14882 dans la branche 4.x. Au fur et à mesure, ils suppriment les fonctionnalités de réclamation non standard obsolètes.

Alors que 4.1.x semble ne les avoir que déconseillés et non supprimés, 4.3.x semble en réalité les avoir supprimés. Cela signifie que les versions 4.3.x et supérieures ont des problèmes de compatibilité avec les versions antérieures compilées dans la branche 3.x (qui utilisaient les fonctions obsolètes et maintenant supprimées)

J'utilisais une combinaison de binaires compilés avec GCC 3.x, 4.1.x et 4.3.x, donc peu importe celui que j'ai utilisé, j'ai obtenu une erreur similaire, car au moins un binaire I la liaison était incompatible avec le compilateur que j'essayais pour le moment.

J'utilise maintenant GCC 4.1.2 et la plupart de mes fichiers binaires ont été compilés avec. Je n’utilise toujours que quelques binaires de la version 3.x, c’est pourquoi je n’effectue pas la mise à niveau vers la version 4.3.x pour l'instant.

L’espoir était moins déroutant à lire qu’à écrire ...

Ceci semble être un bon post traitant de certains problèmes tels qu’ils étaient avec 4.1.x

Autres conseils

Binaires Windows: www.boost.org - voir la " Mise en route " page - mais si vous utilisez g ++ sur MingGW, vous ne les voulez pas. Un moyen simple de comprendre cela est que MingGW est comme un système d'exploitation à l'intérieur d'un système d'exploitation, de sorte que vous n'utilisez vraiment pas Windows. Ceux que vous avez ont probablement raison.

Vous n'êtes pas sûr de ce qui se passe dans votre code, il semble que les fichiers lib ne soient pas liés correctement. Boost nomme ses fichiers lib par eux-mêmes, vous ne devez donc pas les nommer explicitement, mais vous devez avoir les fichiers lib pour être boostés sur le bon chemin (et assurez-vous qu'ils sont également installés / construits, ce qu'ils ne sont peut-être pas). Je ne sais pas trop comment les mettre sur le bon chemin avec g ++ car je n'ai pas utilisé MingGW, je n'ai utilisé que boost avec Visual Studio.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top