101

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

次に、 terminalby を介してライブラリをインストールしましたsudo apt-get install libboost-all-dev。この後、コードブロックのプログラムに次のようなヘッダーを含めることができます#include <boost/regex.hpp>が、ファイルシステム ライブラリ ( #include "boost/filesystem/operations.hpp" ) のヘッダーを含めようとすると、次のエラーが発生します。

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

このエラーを解決する方法がわかりません (特に Linux のコードブロックで)。私は本当にここでいくつかの助けを借りることができました.

コンパイラ: 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
4

13 に答える 13

150

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

-lboost_system

于 2012-11-20T07:17:37.840 に答える
21

ブーストのバージョンに応じて、libboost-system にはライブラリのマルチスレッド機能を示す -mt サフィックスが付いています。

したがって-lboost_system、リンカーが見つからない場合は、 を試してください-lboost_system-mt

于 2013-09-02T08:07:23.723 に答える
9

リンカーの問題です。プロジェクトに静的ライブラリ パスを含めます。

Qt Creator の場合、プロジェクト ファイルを開き.pro、次の行を追加します。

LIBS += -L<path for boost libraries in the system> -lboost_system

私の場合、Ubuntu x86_64:

LIBS += -L/usr/lib/x86_64-linux-gnu -lboost_system

Settings->Compiler...->LinkerCodeblocks の場合、設定タブを開き、以下を追加します。

boost_system

リンク ライブラリ テキスト ウィジェットに移動し、OKボタンを押します。

于 2015-06-02T22:30:13.593 に答える
8

私も解決策を探しましたが、遭遇した答えのどれもエラーを解決しませんでした.このスレッドへの「ViRuSTriNiTy」の答えが見つかるまで: Undefined reference to 'boost::system::generic_category()'?

その答えに従って、これらの行を cmake ファイルに追加してみてください。

find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem)
include_directories(... ${Boost_INCLUDE_DIRS})
link_directories(... ${Boost_LIBRARY_DIRS})
target_link_libraries(... ${Boost_LIBRARIES})
于 2016-09-29T07:54:32.353 に答える
3

私は同じ問題を抱えていて、 Linux Mint (nuduoz として) も使用しています。boost_systemに追加した後、私のケースの問題は解決しましたGCC C++ Linker->Libraries

于 2015-08-26T10:11:57.460 に答える
1

別の問題に遭遇する可能性があります。Linux Mint に Boost をインストールした後、同じ問題が発生しました。ライブラリに name があったため、リンク-lboost_systemまたは機能していません。-lboost_system-mtlibboost_system.so.1.54.0

したがって、解決策は、元のファイルへのシンボリック リンクを作成することです。私の場合

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

詳細については、この質問を参照してください。

于 2015-02-14T14:22:27.797 に答える
0

試す

g++ -c main.cpp && g++ main.o /usr/lib/x86_64-linux-gnu/libboost_system.so && ./a.out 

/usr/lib/x86_64-linux-gnu/ブーストライブラリの場所です

find /usr/ -name '*boost*.so'ブーストライブラリの場所を見つけるために使用します

于 2015-08-02T22:38:22.467 に答える
0

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

debian で完全に動作しました。(apt-get でインストールされた C++ ライブラリをブーストします)。

于 2018-10-08T19:57:19.853 に答える