人。 我正在从源代码编译Box2D,并给出一些麻烦。 我在Box2D目录中运行了preshke的lash版本,然后我切换到/ Build / gmake并运行make。 请回复我:
../../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)
^
恩可以帮助我吗?我使用的是Ubuntu Linux 14.04。
答案 0 :(得分:0)
我通过将prestke生成的-std = gnu ++ 0x添加到makefile来解决我的问题
答案 1 :(得分:0)
premake文件(premake5.lua)提到了这个片段的C ++ 11:
filter { "language:C++", "toolset:gcc" }
buildoptions { "-std=c++11" }
它似乎不起作用。这可能与this issue有关,其解决方案是使用cppdialect
,它只能从premake 5 alpha 12获得(在撰写本文时,最后一个版本是alpha 11,这意味着你需要下载最新版本直接在GitHub上。)
作为快速解决方案,您可以按照OP自己的答案:通过添加-std=c++11
(分别为gnu++11
,c++14
来修改Box2D的Make文件(如果需要,还可以使用HelloWorld和Testbed) }等等到ALL_CXXFLAGS
。
如果您更喜欢修改预制本身:
flags "C++11"
(您还可以添加buildoptions { "-std=c++11" }
,唯一的区别是它还会将选项添加到ALL_CFLAGS)示例:
project "Box2D"
kind "StaticLib"
language "C++"
flags "C++11" -- added
files { "Box2D/**.h", "Box2D/**.cpp" }
includedirs { "." }
我打算通过此更改向Box2D的存储库发送PR。
编辑:完成,这是PR。