2016-04-22 5 views
0

私のOSは、私が使用しているWindows 7の64ビットおよびC++コンパイラは次のとおりです。未定義後押しするための基準::ランダム:: random_deviceコンストラクタとデストラクタ

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

そして、私はブーストのバージョンをインストール1.60使用:

bootstrap.bat mingw 
b2 install target=gcc 

その後、私はそれがBoost.Random tutorialからの例を使用して、作業しているテスト。

最初の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を追加したことがわかったが、用私はそれを助けなかった。

誰もが何らかのアイデアを持っていますか、それがなぜ機能しないのですか?私はチェックし、random_device.hppヘッダをboost_folderフォルダに入れ、random_device()と〜random_device()を宣言しています。

+0

トピック:['std :: random_device'](http://en.cppreference.com/w/cpp/numeric/random/random_device)があなたのバージョンのmingwでインテリジェントに動作する場合は、 。 – user4581301

+0

@ user4581301いいえ、 'std :: random_device'は私のバージョンのmingwでは非決定的に実装されていません。 – Toreno96

答えて

0

g ++のコマンド構文が間違っているのを見つけました。コードをコンパイルしてリンクしたいと思っていました。正しいものはmain.cppに(またはその他のソースコードファイル(複数可)である一方、我々はに含めることを、

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

私は私の質問に書いたように、私はこれをそのように行いますコンパイルプロセス)より前 -Lと-lフラグ。たとえば :

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

あるいは

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

は、それはあまりにも、このような愚かなミスを犯すだろう誰も、助けを願っています。