Discussion thread

Image

Introduction

Because I saw lots of people on the forums and had a hard time compiling OgreODE myself I decided to write a quick howto on compiling OgreOde with Code::Blocks 1.4.7 on Windows XP [size_t error on Windows Vista? I'm going to check it] with a prebuilt OgreSDK Eihort 1.4.7 (though it should work similar with the sources) to go for the totally free way of 3D game programming :-)
This howto is based on the current (April 27, 2008) versions of the software with OgreODE still trying to use the obsolete STLport. I hope it helps.

OgreOde_core and OgreOde_prefab

To compile the OgreOde_core and OgreOde_prefab:

  • Install OgreSDKSetup1.4.7_CBMingW.exe
  • Get ogreaddons\ogreode via SVN and put it into $(OGRE_HOME)\ogreaddons\ogreode
  • Download ode-0.9 binaries (ode-win32-0.9.zip) from the ODE website
  • Unzip them to ogreaddons\ogreode and rename the resulting ode-0.9 folder to ode - you should now have a folder $(OGRE_HOME)\ogreaddons\ogreode\ode
  • Open ogreaddons\ogreode\scripts\CodeBlocks\OgreOde_SDK.workspace, ignore the messages about the missing demos and the message about the missing ode_SDK.cbp - we don't need to compile that ourselves because we've got the pre-compiled release
  • We need to throw out the STL Port. Change the following in the project's properties:

Linker settings -> Link libraries:
   Delete stlportstlg.5.0 or stlport.5.0

 Search directories -> Compiler:
   Delete $(OGRE_HOME)\stlport\stlport
   Add $(OGRE_HOME)\ogreaddons\ogreode\include

 Search directories -> Linker:
   Change ..\..\ode\lib\Release to ..\..\ode\lib\DebugDLL or ..\..\ode\lib\ReleaseDLL


(The changes are the same for prefab, just there's no need to change the linker's search directories)

  • In $(OGRE_HOME)\include rename the ode folder to something else - we don't want that one to be used
  • In OgreOdeGeometry.cpp [line 903] change the line

dGeomTriMeshDataBuildSimple(_data,(const dReal*)_vertices, (int)vertex_count, _indices, (int)index_count);

to

dGeomTriMeshDataBuildSimple(_data,(const dReal*)_vertices, (int)vertex_count, (dTriIndex*)_indices, (int)index_count);


Thanks to rewb0rn for that hint!

  • Add all c++ files from ogreaddons\ogreode\src and all from ogreaddons\ogreode\include to the OgreOde_Core project in Code::Blocks
  • Compile! After the linking Code::Blocks might throw an error because of the post compile copy script. Ignore that and
  • copy the output DLL from ogreaddons\ogreode\lib\Release (and later ogreaddons\ogreode\prefab\lib\Release) to $(OGRE_HOME)\bin\Release by hand
  • Compile TinyXML, change paths in OgreOde_prefab and compile that one too

OgreOde_loader

To compile the OgreOde_loader:

  • Import the VC++ project from ogreaddons\ogreode\loader\scripts\VC8 with Code::Blocks (select 'All Files (*.*)' if you can't find it)
  • Change the directories, 'debug win32' (or 'release win32') would be just 'debug' (or 'release') these days

Search directories -> Compiler:
   Change $(ODE_HOME)\include to $(OGRE_HOME)\ogreaddons\ogreode\ode\include
   Add $(OGRE_HOME)\ogreaddons\ogreode\loader\include

 Search directories -> Linker:
   $(OGRE_HOME)\lib to $(OGRE_HOME)\bin\Debug or $(OGRE_HOME)\bin\Release
  • Compile and copy the dll from ogreaddons\ogreode\loader\lib\Debug Win32 (or Release Win32) to $(OGRE_HOME)\bin\debug (or release)

Demos

To compile the demos:

  • Remove the stlport wherever you can find it
  • Add OgreOde_loader to the project's link libraries
  • Add OIS to the linker project's link libraries
  • Compile


Getting the demos running is a tricky job because you need to provide Ogre's as well as OgreODE's media directory. Give it a try or take a look at the forum thread.

Conclusion

If you experience any linking problems try adding OGREODEEXPORT_LOADER to the compiler defines. Because the post compile copy scripts didn't work for me I couldn't run the demos without changing resources.cfg, maybe someone can figure out what's wrong there. I'm gonna take a coffee break :-)

written by Daerst, April 27, 2008

You may now want to discuss in the OgreOde forum, continue with the article First steps with OgreODE or have a look at the OgreODE home.