伙计们。我正在从源代码编译Box2D,并给了一些麻烦。我在Box2D目录中运行了lash版本的premake,然后切换到/Build/gmake并运行make。Make return me:
../../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。
发布于 2016-06-29 02:32:03
通过将-std=gnu++0x添加到由
生成的makefile中,我解决了我的问题
发布于 2017-08-21 05:23:35
premake文件(premake5.lua)使用以下代码片段提到了C++11:
filter { "language:C++", "toolset:gcc" }
buildoptions { "-std=c++11" }是不是看起来不管用。这可能与this issue有关,它的解决方案是使用cppdialect,它只在premake 5 Alpha12中可用(在撰写本文时,最新版本是Alpha11,这意味着您需要直接在GitHub上下载最新版本)。
作为一种快速解决方法,您可以遵循OP自己的答案:通过添加-std=c++11修改Box2D的Make文件(如果需要,还可以修改HelloWorld和Testbed )。gnu++11、c++14等)敬ALL_CXXFLAGS。
如果您希望修改premake本身,请执行以下操作:
premake5.lua,中的
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 { "." }我打算将此更改的PR发送到Box2D的存储库。
编辑:完成,这是PR。
https://stackoverflow.com/questions/38082167
复制相似问题