2016-06-28 21 views
0

人。 ソースコードからBox2Dをコンパイルしていて、何か問題があります。 私はBox2Dディレクトリでpremakeのラッシュバージョンを実行した後、/ Build/gmakeに切り替えてmakeを実行しました。 は私にこれを返してください:Box2Dコンパイルトラブル。 nullptr

../../Box2D/Dynamics/b2Body.cpp: In member function ‘void b2Body::DestroyFixture(b2Fixture*)’: 
../../Box2D/Dynamics/b2Body.cpp:216:17: error: ‘nullptr’ was not declared in this scope 
if (fixture == nullptr) 
      ^

は私を助けてenyoneことはできますか?私はUbuntu Linux 14.04を使用しています。

+0

gccのどのバージョンをインストールしましたか? – slf

+0

@slf私はgccを使います。4.8.4 –

+0

@slf私は自分の問題を解決するために、-std = gnu ++ 0xをmakefileに、premake –

答えて

0

私はpremakeで

0

premakeファイル(premake5.lua)を生成-std = gnuの++ 0xのメイクファイルに追加することによって私の問題を解決するには、このスニペットをC++ 11に言及している:

filter { "language:C++", "toolset:gcc" } 
    buildoptions { "-std=c++11" } 

動作しないようです。これはおそらくthis issueに関連しています。その解決策は、premake 5アルファ12からのみ利用可能なcppdialectを使用することです(最新のリリースはアルファ11です。つまり、GitHubで最新のバージョンを直接ダウンロードする必要があります)。

はクイックフィックスとして、あなたはOPの自身の答えに従うことができます:-std=c++11(。RESP gnu++11c++14など)ALL_CXXFLAGSに追加することによって、(必要に応じてもHelloWorldのテストベッドと)BOX2Dの作成したファイルを変更します。あなたはpremake自体の変更を好む場合

  1. premake5.luaでは、フィルタをコメントアウト/ buildoptionsはBOX2D(また、HelloWorldの、必要に応じてテストベッド)、追加のプロジェクトでは
  2. 上記のスニペットflags "C++11"(あなたもbuildoptions { "-std=c++11" }を追加することができ、唯一の違いは、それはまたALL_CFLAGSにオプションを追加するということです)

例:

この変更を加えて、Box2DのリポジトリにPRを送信するつもりです。

編集:完了、ここにはPRです。