【问题标题】:Box2D compiling trouble. nullptrBox2D 编译麻烦。空指针
【发布时间】:2016-06-28 17:00:01
【问题描述】:

伙计们。 我正在从源代码编译Box2D,并给一些麻烦。 我在 Box2D 目录中运行了 lash 版本的 premake,然后我切换到 /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。

【问题讨论】:

  • 你安装了什么版本的gcc?
  • @slf 我使用 gcc 4.8.4
  • @slf 我通过将 -std=gnu++0x 添加到由 premake 生成的 makefile 来解决我的问题

标签: c++ linux box2d nullptr


【解决方案1】:

我通过将 -std=gnu++0x 添加到由 premake 生成的 makefile 来解决我的问题

【讨论】:

    【解决方案2】:

    premake 文件(premake5.lua)用这个 sn-p 提到 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++11c++14 等)来修改 Box2D 的 Make 文件(如果需要,还可以是 HelloWorld 和 Testbed) ALL_CXXFLAGS.

    如果您更喜欢修改预制件本身:

    1. premake5.lua中,注释掉上面提到的filter/buildoptions sn -p
    2. 在 Box2D 项目中(如果需要,还可以添加 HelloWorld 和 Testbed),添加 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2015-10-07
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多