1. ホーム
  2. c++

[解決済み] C++ Boost: boost::system::generic_category() への未定義の参照

2023-02-05 19:36:56

質問

私は Boost ライブラリをプロジェクトに含めようとしていますが、同じ問題に直面しています。私は Ubuntu 12.10 で Codeblocks IDE を使用しており、サイトからの指示を読んで手動でライブラリをインストールしようとしましたが、ヘッダーと使用前に構築するライブラリでエラーが発生しました。

そこで、ターミナルを使用してライブラリをインストールしました。 sudo apt-get install libboost-all-dev . この後、Codeblocks 上のプログラムでは、以下のようなヘッダを含めることができます。 #include <boost/regex.hpp> のようなヘッダをインクルードできますが、 Filesystem ライブラリ用のヘッダをインクルードしようとすると ( #include "boost/filesystem/operations.hpp" ) をインクルードしようとすると、以下のエラーが発生します。

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

このエラーを解決する方法がよくわかりません(特にLinuxのCodeblocksで)。私は本当にここでいくつかの助けを借りることができます。

コンパイラ:Gcc

プログラムコードです。上記のファイルシステムを組み込んでみただけです。 operations.hpp というファイルを作成します。

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

どのように解決するのですか?

をリンクする必要があります。 libboost_system ライブラリにリンクする必要があります。codeblocksについてはよく分かりませんが、あなたのプラットフォームでのg++のコマンドラインオプションは

-lboost_system