1

私のOSはWindows 7 64ビットで、使用しているC++コンパイラは次のとおりです。

g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 5.3.0

そして、次を使用して Boost バージョン 1.60 をインストールしました。

bootstrap.bat mingw
b2 install target=gcc

次に、Boost.Randomチュートリアルの例を使用して、動作するかどうかをテストしました。

最初の 2 つではすべて問題ありませんでしたが、3 つ目では、boost::random::random_device に関するリンカ エラーが発生しました。これだけを持つようにコードを最小化しました:

// Compiled with:
// g++ -IC:/Boost/include/boost-1_60
// -LC:/Boost/lib -lboost_random-mgw53-mt-1_60
// main.cpp

#include "boost/random/random_device.hpp"

int main() {
    boost::random::random_device rng;
}

そして、次のエラーが表示されます。

C:\Users\Daniel\AppData\Local\Temp\cc5DfdjZ.o:main.cpp:(.text+0x15):
undefined reference to `boost::random::random_device::random_device()'
C:\Users\Daniel\AppData\Local\Temp\cc5DfdjZ.o:main.cpp:(.text+0x20):
undefined reference to `boost::random::random_device::~random_device()'
collect2.exe: error: ld returned 1 exit status

ここで、SOで、同様の問題を抱えている人が-lboost_systemをフラグに追加したことがわかりましたが、私にとっては役に立ちませんでした。

なぜそれが機能しないのですか?確認したところ、Boost フォルダーに random_device.hpp ヘッダーがあり、random_device() と ~random_device() が宣言されています。

4

1 に答える 1