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.