2017-02-27 6 views
0

私のプログラムでは、std :: mt19937を使用して乱数を生成しています。 2つのシステム(最新のウィンドウとubuntu)では、プログラムはうまくコンパイルされます。しかし、3番目の不明なシステム(makeを使用)では、エラーメッセージが表示されます。 "'mt19937'は 'std'のメンバーではありません"mt19937は標準翻訳のメンバーではありません。

私はmakefileが正しく書かれていないと仮定しています。私はmakefileを初めて使っていて、どこから始めるべきかわからない。私はC++ 11を強制する必要がありますか?どうすればいい?

all: 

%.o: %.cc 
    g++ -c -O2 -Wall -Wextra -pedantic $< 

library-objects = \ 
    BigUnsigned.o \ 
    BigInteger.o \ 
    BigIntegerAlgorithms.o \ 
    BigUnsignedInABase.o \ 
    BigIntegerUtils.o \ 

library-headers = \ 
    NumberlikeArray.hh \ 
    BigUnsigned.hh \ 
    BigInteger.hh \ 
    BigIntegerAlgorithms.hh \ 
    BigUnsignedInABase.hh \ 
    BigIntegerLibrary.hh \ 

library: $(library-objects) 

$(library-objects): $(library-headers) 

# Components of the program. 
program = rsa435 
program-objects = rsa435.o 

$(program-objects) : $(library-headers) 

$(program) : $(program-objects) $(library-objects) 
    g++ $^ -o [email protected] 

clean : 
    rm -f $(library-objects) $(testsuite-cleanfiles) $(program-objects) $(program) 

all : library $(program) 

EDIT:ccファイルとcppファイルの両方があることに言及する価値があります。多分これも問題を引き起こしているのでしょうか?

+0

は、あなたがこのの名前を提供することができますが「不明なシステム」? – hannibal

+0

私は正直には分かりませんが、私はそれがマックだと思います。 – Tommizzy

+6

g ++の行に '-std = C++ 11'を追加してください –

答えて

0

"std"名前空間について認識しているが、その名前空間に "mt19937"が定義されていないというエラーが表示されます。

mt19937がC++ 11まで定義されていないため、g ++コマンドラインに "-std = C++ 11"を追加してください。

(クレジット:これは、もともとの質問にコメントとしてリチャードCrittenによって投稿されました。)

また、あなたはこのヘッダファイルを追加する必要があるかもしれません:

#include <random> 
関連する問題