Horde3D
http://horde3d.org/forums/

Bullet Extension Build Problems [Solved]
http://horde3d.org/forums/viewtopic.php?f=2&t=2298
Page 1 of 1

Author:  rasteron [ 26.01.2017, 16:21 ]
Post subject:  Bullet Extension Build Problems [Solved]

Hi again,

I'm trying to add Bullet Extension made by penguins916 here, however I'm getting Linker errors (unresolved externals) when building Horde3D.dll. I tried with Bullet 2.8.2 and 2.74 libraries that can be found on the GameEngine version. I also tried to compile a separate Bullet download package (2.8.2) on GitHub but with same errors.

Here is the error list thrown by VC2008

Code:
1>   Creating library C:\h3d\Build\Horde3D\Source\Horde3DEngine\Release\Horde3D.lib and object C:\h3d\Build\Horde3D\Source\Horde3DEngine\Release\Horde3D.exp
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetNodeTransMats imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dUnmapResStream imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dMapResStream imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetNodeParamI imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetNodeParent imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetResParamI imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetNodeParamStr imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetNodeParamF imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dGetNodeType imported in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dCheckNodeTransFlag imported in function "public: void __thiscall PhysicsNode::update(void)" (?update@PhysicsNode@@QAEXXZ)
1>egPhysics.obj : warning LNK4217: locally defined symbol _h3dSetNodeTransMat imported in function "public: void __thiscall PhysicsNode::update(void)" (?update@PhysicsNode@@QAEXXZ)
1>egModules.obj : error LNK2001: unresolved external symbol "public: virtual char const * __thiscall Horde3DTerrain::ExtTerrain::getName(void)" (?getName@ExtTerrain@Horde3DTerrain@@UAEPBDXZ)
1>egModules.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall Horde3DTerrain::ExtTerrain::init(void)" (?init@ExtTerrain@Horde3DTerrain@@UAE_NXZ)
1>egModules.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Horde3DTerrain::ExtTerrain::release(void)" (?release@ExtTerrain@Horde3DTerrain@@UAEXXZ)
1>egModules.obj : error LNK2001: unresolved external symbol "public: virtual char const * __thiscall Horde3DSound::ExtSound::getName(void)" (?getName@ExtSound@Horde3DSound@@UAEPBDXZ)
1>egModules.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall Horde3DSound::ExtSound::init(void)" (?init@ExtSound@Horde3DSound@@UAE_NXZ)
1>egModules.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Horde3DSound::ExtSound::release(void)" (?release@ExtSound@Horde3DSound@@UAEXXZ)
1>egPhysics.obj : error LNK2019: unresolved external symbol __imp__h3dextCreateTerrainGeoRes referenced in function "public: __thiscall PhysicsNode::PhysicsNode(struct CollisionShape,int)" (??0PhysicsNode@@QAE@UCollisionShape@@H@Z)
1>C:\h3d\Horde3D\Binaries\Windows\Horde3D.dll : fatal error LNK1120: 7 unresolved externals


Added this to CMakeList.txt on the root folder

Code:
option(HORDE3D_BUILD_BULLET "Build the Bullet extension into Horde3D" ON)
if(HORDE3D_BUILD_BULLET)
   add_subdirectory(Extensions/Bullet)
   #include path to bullet
   #include_directories(/usr/include/bullet/)
   
   set(HORDE3D_EXTENSION_SOURCES
      ${HORDE3D_EXTENSION_SOURCES}
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/egPhysics.h
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/egPhysics.cpp
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/extension.h
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/extension.cpp
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/utMath.h
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/utXMLParser.h
      ${Horde3D_SOURCE_DIR}/Extensions/Bullet/Source/utXMLParser.cpp
      )
   set(HORDE3D_EXTENSION_INSTALLS
      ${HORDE3D_EXTENSION_INSTALLS}
      "extMan().installExtension( new Horde3DBullet::ExtBullet() );\n"
      )
   set(HORDE3D_EXTENSION_INCLUDES
      ${HORDE3D_EXTENSION_INCLUDES}
      "\n#include \"Extensions/Bullet/Source/extension.h\"\n"
      )
   set(HORDE3D_EXTENSION_LIBS
      BulletCollision BulletDynamics LinearMath
      )
      
endif(HORDE3D_BUILD_BULLET)


and pointing to include and lib directories of bullet once I generated the solution.

Any ideas?

EDIT For some reason CMake did not include the Terrain and Sound generated libs in the Additional Library Dependencies. Works ok now. :)

Page 1 of 1 All times are UTC + 1 hour
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/