私の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() が宣言されています。