101 votes

C++ Boost : référence indéfinie à boost::system::generic_category()

J'essaie d'inclure Boost dans mon projet et j'ai rencontré des problèmes dans ce domaine. Je suis sur Ubuntu 12.10 avec l'IDE Codeblocks et j'ai essayé d'installer les bibliothèques manuellement en lisant les instructions du site, mais j'ai eu des erreurs avec les en-têtes ainsi que les bibliothèques à construire avant utilisation.

J'ai ensuite installé les bibliothèques via le terminal en sudo apt-get install libboost-all-dev . Après cela, dans mes programmes sur Codeblocks, je peux inclure des en-têtes comme #include <boost/regex.hpp> mais lorsque j'essaie d'inclure l'en-tête de la bibliothèque Filesystem ( #include "boost/filesystem/operations.hpp" ), j'obtiens l'erreur suivante :

/usr/include/boost/system/error_code.hpp|214|undefined reference to boost::system::generic_category()'|

Je ne sais pas comment résoudre cette erreur (spécifiquement dans Codeblocks sous Linux). J'aurais vraiment besoin d'aide ici.

Compilateur : Gcc
Code du programme : Seulement essayé en incluant le système de fichiers ci-dessus. operations.hpp fichier.

Journal de construction de Codeblocks :

Build started on: 20-11-2012 at 18:02.53
Build ended on: 20-11-2012 at 18:02.54
-------------- Build: Debug in libopenFrameworks ---------------
Target is up to date.
-------------- Build: Debug in reader1 ---------------
make -s -f Makefile Debug
linking i686 bin/reader1_debug linux
obj/i686Debug/src/testApp.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
obj/i686Debug/src/main.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [bin/reader1_debug] Error 1
Process terminated with status 2 (0 minutes, 1 seconds)
6 errors, 0 warnings

4voto

Halowb Points 17

Même problème lors de la construction d'un exemple simple de boost, résolu après avoir changé le drapeau de compilation g++ de -std=c++14 à -std=c++11 .

Et j'ai remarqué que c'est un exemple C++11...

3voto

piotr93 Points 41

J'ai eu le même problème et j'utilise aussi Linux Mint (comme nuduoz) . Dans mon cas, le problème a été résolu après l'ajout de boost_system à GCC C++ Linker->Libraries .

1voto

nuduoz Points 47

Vous pourriez rencontrer un autre problème. Après avoir installé Boost sur le Linux Mint, j'ai eu le même problème. Lien vers -lboost_system o -lboost_system-mt n'ont pas fonctionné parce que la bibliothèque a eu le nom libboost_system.so.1.54.0 .

La solution consiste donc à créer un lien symbolique vers le fichier original. Dans mon cas

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0 /usr/lib/libboost_system.so

Pour plus d'informations, voir ce question.

1voto

majukarma Points 11

g++ -lboost_system -lboost_filesystem userentry.cpp -o userentry

a fonctionné parfaitement sous debian (les bibliothèques de boost c++ sont installées avec apt-get).

1voto

Majukarma Points 11

Si la bibliothèque n'est pas installée, vous devez donner le dossier des bibliothèques de boost :

exemple :

g++ -L/usr/lib/x86_64-linux-gnu -lboost_system -lboost_filesystem prog.cpp -o prog

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X