DanielChappuis / reactphysics3d

Open source C++ physics engine library in 3D

Home Page:http://www.reactphysics3d.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The library conflicts with X11

lotosprogrammer opened this issue · comments

I am using Ubuntu 22.04.2 LTS. With 525 proprietary nvidia drivers. The 2 header files seemingly cause a conflict, but correct me if I'm wrong.
And my X11 version.

version number:    11.0
X.Org version: 1.21.1.3

Now my error messages, by the looks of it these 2 are somehow incompatible but I may be wrong so please correct me if I am.

./In file included from /usr/include/X11/Xlib.h:44,
                 from src/main.cpp:8:
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:43:5: error: expected identifier before numeric constant
   43 |     None,
      |     ^~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:43:5: error: expected ‘}’ before numeric constant
In file included from /usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:32,
                 from /usr/include/reactphysics3d/systems/CollisionDetectionSystem.h:40,
                 from /usr/include/reactphysics3d/engine/PhysicsWorld.h:49,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:42:37: note: to match this ‘{’
   42 | enum class NarrowPhaseAlgorithmType {
      |                                     ^
In file included from /usr/include/X11/Xlib.h:44,
                 from src/main.cpp:8:
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:43:5: error: expected unqualified-id before numeric constant
   43 |     None,
      |     ^~~~
In file included from /usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:32,
                 from /usr/include/reactphysics3d/systems/CollisionDetectionSystem.h:40,
                 from /usr/include/reactphysics3d/engine/PhysicsWorld.h:49,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:63:9: error: ‘MemoryAllocator’ does not name a type
   63 |         MemoryAllocator& mAllocator;
      |         ^~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:84:9: error: ‘SphereVsSphereAlgorithm’ does not name a type
   84 |         SphereVsSphereAlgorithm* mSphereVsSphereAlgorithm;
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:87:9: error: ‘CapsuleVsCapsuleAlgorithm’ does not name a type
   87 |         CapsuleVsCapsuleAlgorithm* mCapsuleVsCapsuleAlgorithm;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:90:9: error: ‘SphereVsCapsuleAlgorithm’ does not name a type
   90 |         SphereVsCapsuleAlgorithm* mSphereVsCapsuleAlgorithm;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:93:9: error: ‘SphereVsConvexPolyhedronAlgorithm’ does not name a type
   93 |         SphereVsConvexPolyhedronAlgorithm* mSphereVsConvexPolyhedronAlgorithm;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:96:9: error: ‘CapsuleVsConvexPolyhedronAlgorithm’ does not name a type
   96 |         CapsuleVsConvexPolyhedronAlgorithm* mCapsuleVsConvexPolyhedronAlgorithm;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:99:9: error: ‘ConvexPolyhedronVsConvexPolyhedronAlgorithm’ does not name a type
   99 |         ConvexPolyhedronVsConvexPolyhedronAlgorithm* mConvexPolyhedronVsConvexPolyhedronAlgorithm;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:102:9: error: ‘NarrowPhaseAlgorithmType’ does not name a type
  102 |         NarrowPhaseAlgorithmType mCollisionMatrix[NB_COLLISION_SHAPE_TYPES][NB_COLLISION_SHAPE_TYPES];
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:106:9: error: ‘NarrowPhaseAlgorithmType’ does not name a type
  106 |         NarrowPhaseAlgorithmType selectAlgorithm(int type1, int type2);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:118:42: error: expected ‘)’ before ‘&’ token
  118 |         CollisionDispatch(MemoryAllocator& allocator);
      |                          ~               ^
      |                                          )
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:124:41: error: ‘SphereVsSphereAlgorithm’ has not been declared
  124 |         void setSphereVsSphereAlgorithm(SphereVsSphereAlgorithm* algorithm);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:127:9: error: ‘SphereVsSphereAlgorithm’ does not name a type
  127 |         SphereVsSphereAlgorithm* getSphereVsSphereAlgorithm();
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:130:42: error: ‘SphereVsCapsuleAlgorithm’ has not been declared
  130 |         void setSphereVsCapsuleAlgorithm(SphereVsCapsuleAlgorithm* algorithm);
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:133:9: error: ‘SphereVsCapsuleAlgorithm’ does not name a type
  133 |         SphereVsCapsuleAlgorithm* getSphereVsCapsuleAlgorithm();
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:136:43: error: ‘CapsuleVsCapsuleAlgorithm’ has not been declared
  136 |         void setCapsuleVsCapsuleAlgorithm(CapsuleVsCapsuleAlgorithm* algorithm);
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~
a/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:139:9: error: ‘CapsuleVsCapsuleAlgorithm’ does not name a type
  139 |         CapsuleVsCapsuleAlgorithm* getCapsuleVsCapsuleAlgorithm();
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:142:51: error: ‘SphereVsConvexPolyhedronAlgorithm’ has not been declared
  142 |         void setSphereVsConvexPolyhedronAlgorithm(SphereVsConvexPolyhedronAlgorithm* algorithm);
      |                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:145:9: error: ‘SphereVsConvexPolyhedronAlgorithm’ does not name a type
  145 |         SphereVsConvexPolyhedronAlgorithm* getSphereVsConvexPolyhedronAlgorithm();
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:148:52: error: ‘CapsuleVsConvexPolyhedronAlgorithm’ has not been declared
  148 |         void setCapsuleVsConvexPolyhedronAlgorithm(CapsuleVsConvexPolyhedronAlgorithm* algorithm);
      |                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:151:9: error: ‘CapsuleVsConvexPolyhedronAlgorithm’ does not name a type
  151 |         CapsuleVsConvexPolyhedronAlgorithm* getCapsuleVsConvexPolyhedronAlgorithm();
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:154:61: error: ‘ConvexPolyhedronVsConvexPolyhedronAlgorithm’ has not been declared
  154 |         void setConvexPolyhedronVsConvexPolyhedronAlgorithm(ConvexPolyhedronVsConvexPolyhedronAlgorithm* algorithm);
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:157:9: error: ‘ConvexPolyhedronVsConvexPolyhedronAlgorithm’ does not name a type
  157 |         ConvexPolyhedronVsConvexPolyhedronAlgorithm* getConvexPolyhedronVsConvexPolyhedronAlgorithm();
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:163:9: error: ‘NarrowPhaseAlgorithmType’ does not name a type
  163 |         NarrowPhaseAlgorithmType selectNarrowPhaseAlgorithm(const CollisionShapeType& shape1Type,
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:176:19: error: ‘SphereVsSphereAlgorithm’ does not name a type
  176 | RP3D_FORCE_INLINE SphereVsSphereAlgorithm* CollisionDispatch::getSphereVsSphereAlgorithm() {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:181:19: error: ‘SphereVsCapsuleAlgorithm’ does not name a type
  181 | RP3D_FORCE_INLINE SphereVsCapsuleAlgorithm* CollisionDispatch::getSphereVsCapsuleAlgorithm() {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:186:19: error: ‘CapsuleVsCapsuleAlgorithm’ does not name a type
  186 | RP3D_FORCE_INLINE CapsuleVsCapsuleAlgorithm* CollisionDispatch::getCapsuleVsCapsuleAlgorithm() {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:191:19: error: ‘SphereVsConvexPolyhedronAlgorithm’ does not name a type
  191 | RP3D_FORCE_INLINE SphereVsConvexPolyhedronAlgorithm* CollisionDispatch::getSphereVsConvexPolyhedronAlgorithm() {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:196:19: error: ‘CapsuleVsConvexPolyhedronAlgorithm’ does not name a type
  196 | RP3D_FORCE_INLINE CapsuleVsConvexPolyhedronAlgorithm* CollisionDispatch::getCapsuleVsConvexPolyhedronAlgorithm() {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:201:19: error: ‘ConvexPolyhedronVsConvexPolyhedronAlgorithm’ does not name a type
  201 | RP3D_FORCE_INLINE ConvexPolyhedronVsConvexPolyhedronAlgorithm* CollisionDispatch::getConvexPolyhedronVsConvexPolyhedronAlgorithm() {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:32,
                 from /usr/include/reactphysics3d/systems/CollisionDetectionSystem.h:40,
                 from /usr/include/reactphysics3d/engine/PhysicsWorld.h:49,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/collision/narrowphase/CollisionDispatch.h:221:1: error: expected declaration before ‘}’ token
  221 | }
      | ^
In file included from /usr/include/reactphysics3d/systems/CollisionDetectionSystem.h:40,
                 from /usr/include/reactphysics3d/engine/PhysicsWorld.h:49,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h: In member function ‘void reactphysics3d::NarrowPhaseInput::addNarrowPhaseTest(reactphysics3d::uint64, reactphysics3d::Entity, reactphysics3d::Entity, reactphysics3d::CollisionShape*, reactphysics3d::CollisionShape*, const reactphysics3d::Transform&, const reactphysics3d::Transform&, reactphysics3d::NarrowPhaseAlgorithmType, bool, reactphysics3d::LastFrameCollisionInfo*, reactphysics3d::MemoryAllocator&)’:
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:137:40: error: ‘SphereVsSphere’ is not a member of ‘reactphysics3d::NarrowPhaseAlgorithmType’
  137 |         case NarrowPhaseAlgorithmType::SphereVsSphere:
      |                                        ^~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:140:40: error: ‘SphereVsCapsule’ is not a member of ‘reactphysics3d::NarrowPhaseAlgorithmType’
  140 |         case NarrowPhaseAlgorithmType::SphereVsCapsule:
      |                                        ^~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:143:40: error: ‘CapsuleVsCapsule’ is not a member of ‘reactphysics3d::NarrowPhaseAlgorithmType’
  143 |         case NarrowPhaseAlgorithmType::CapsuleVsCapsule:
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:146:40: error: ‘SphereVsConvexPolyhedron’ is not a member of ‘reactphysics3d::NarrowPhaseAlgorithmType’
  146 |         case NarrowPhaseAlgorithmType::SphereVsConvexPolyhedron:
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:149:40: error: ‘CapsuleVsConvexPolyhedron’ is not a member of ‘reactphysics3d::NarrowPhaseAlgorithmType’
  149 |         case NarrowPhaseAlgorithmType::CapsuleVsConvexPolyhedron:
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:152:40: error: ‘ConvexPolyhedronVsConvexPolyhedron’ is not a member of ‘reactphysics3d::NarrowPhaseAlgorithmType’
  152 |         case NarrowPhaseAlgorithmType::ConvexPolyhedronVsConvexPolyhedron:
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/X11/Xlib.h:44,
                 from src/main.cpp:8:
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:155:40: error: expected unqualified-id before numeric constant
  155 |         case NarrowPhaseAlgorithmType::None:
      |                                        ^~~~
In file included from /usr/include/reactphysics3d/systems/CollisionDetectionSystem.h:40,
                 from /usr/include/reactphysics3d/engine/PhysicsWorld.h:49,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:155:38: error: expected ‘:’ before numeric constant
  155 |         case NarrowPhaseAlgorithmType::None:
      |                                      ^
      |                                      :
/usr/include/reactphysics3d/collision/narrowphase/NarrowPhaseInput.h:155:44: error: expected ‘;’ before ‘:’ token
  155 |         case NarrowPhaseAlgorithmType::None:
      |                                            ^
In file included from /usr/include/reactphysics3d/engine/PhysicsWorld.h:49,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/systems/CollisionDetectionSystem.h: At global scope:
/usr/include/reactphysics3d/systems/CollisionDetectionSystem.h:91:27: error: field ‘mCollisionDispatch’ has incomplete type ‘reactphysics3d::CollisionDispatch’
   91 |         CollisionDispatch mCollisionDispatch;
      |                           ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/reactphysics3d/collision/ContactPair.h:32,
                 from /usr/include/reactphysics3d/collision/CollisionCallback.h:31,
                 from /usr/include/reactphysics3d/engine/PhysicsWorld.h:44,
                 from /usr/include/reactphysics3d/engine/PhysicsCommon.h:31,
                 from /usr/include/reactphysics3d/reactphysics3d.h:42,
                 from src/include/Level.hpp:9,
                 from src/main.cpp:18:
/usr/include/reactphysics3d/engine/OverlappingPairs.h:48:7: note: forward declaration of ‘class reactphysics3d::CollisionDispatch’
   48 | class CollisionDispatch;
      |       ^~~~~~~~~~~~~~~~~

Thanks. Yes, it has already been reported in issue #311.

It's proably because the enum value 'NONE' is not protected behind a namespace in X11 library. I might need to rename this enum value NarrowPhaseAlgorithmType::NONE in the code.

commented

Include rp3d before x11 solves the issue

Also undefining "None" before including reactphysics works, but i would not recommend doing it this way

This is now fixed in version v0.10.0 of the library. Thanks a lot for reporting the issue.