2016-06-28 1 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) 
      ^

나를 도와 줄 수 있습니까? 나는 우분투 리눅스 14.04를 사용한다.

+0

gcc의 어떤 버전을 설치하셨습니까? – slf

+0

@slf gcc를 사용합니다. 4.8.4 –

+0

@slf 전제 조건에 따라 생성 된 makefile에 -std = gnu ++ 0x를 추가하여 문제를 해결합니다. –

답변

0

내가 premake에 의해

0

premake 파일 (premake5.lua)을 생성 -std = GNU + +0이 메이크 파일에 추가하여 내 문제를 해결이 조각과 C++ (11)를 언급한다 :

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

작동하지 않는 것 같습니다. 이것은 아마도 this issue과 관련이 있습니다. 그 해결책은 premake 5 alpha 12에서만 사용할 수있는 cppdialect을 사용하는 것입니다 (작성 당시, 마지막 릴리즈는 alpha 11이므로 GitHub에서 직접 최신 버전을 다운로드해야 함).

은 빠른 수정, 당신은 OP 자신의 대답을 따를 수 : -std=c++11 (. RESP gnu++11, c++14 등) ALL_CXXFLAGS에 추가하여 (필요한 경우도하여 HelloWorld와 테스트 베드) Box2D의의 확인 파일을 수정합니다. 당신이 premake 자체 수정을 선호하는 경우

:

  1. premake5.lua에서이 필터를 주석/buildoptions는 Box2D의 (도하여 HelloWorld하고 필요한 경우 테스트 베드) 추가 프로젝트에서
  2. 위에서 언급 한 스 니펫 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입니다.