2016-06-28 2 views
0

les gars. Je compile Box2D à partir du code source, et donne quelques problèmes. J'ai couru la version de prémake dans le répertoire Box2D, puis je suis passé à/Build/gmake et j'ai lancé make. Faites-moi retourner ceci:Box2D problème de compilation. 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) 
      ^

Peut enyone me aider? J'utilise Ubuntu Linux 14.04.

+0

quelle version de gcc avez-vous installée? – slf

+0

@slf J'utilise gcc 4.8.4 –

+0

@slf Je résous mon problème en ajoutant -std = gnu ++ 0x à makefile, généré par premake –

Répondre

0

Je résoudre mon problème par ajouter std = gnu ++ 0x à makefile, généré par premake

0

Le fichier premake (premake5.lua) mentionne 11 C++ avec cet extrait:

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

cela ne semble pas fonctionner. Ceci est probablement lié à this issue, dont la solution est d'utiliser cppdialect qui est seulement disponible à partir de premake 5 alpha 12 (au moment de l'écriture, la dernière version est alpha 11, ce qui signifie que vous devez télécharger la dernière version directement sur GitHub).

Comme une solution rapide, vous pouvez suivre le propre réponse de l'OP: modifier les fichiers de Make Box2D (également HelloWorld et Testbed si nécessaire) en ajoutant -std=c++11 (resp gnu++11, c++14, etc..) À ALL_CXXFLAGS.

Si vous préférez modifier le premake lui-même:

  1. Dans premake5.lua, Commentaire sur le filtre/buildoptions extrait mentionné ci-dessus
  2. Dans les projets Box2D (également HelloWorld et Testbed si nécessaire), ajouter flags "C++11" (vous pouvez également ajouter buildoptions { "-std=c++11" }, la seule différence est qu'il ajoutera également l'option à ALL_CFLAGS)

Exemple:

project "Box2D" 
    kind "StaticLib" 
    language "C++" 
    flags "C++11" -- added 
    files { "Box2D/**.h", "Box2D/**.cpp" } 
    includedirs { "." } 

J'ai l'intention d'envoyer un PR au référentiel Box2D avec cette modification. EDIT: Fait, voici le PR.