Lots of Linux compile errors

thebinaryblob

25-01-2009 18:17:39

I have been having a lot of trouble compiling OgreOde, so far, I am stuck here:


In file included from OgreOdeCollision.cpp:5:
../include/OgreOdeSpace.h:19: error: ‘dSweepAndPruneSpaceClass’ was not declared in this scope
../include/OgreOdeSpace.h:102: error: ‘dSAP_AXES_XYZ’ was not declared in this scope
../include/OgreOdeSpace.h:103: error: ‘dSAP_AXES_XZY’ was not declared in this scope
../include/OgreOdeSpace.h:104: error: ‘dSAP_AXES_YXZ’ was not declared in this scope
../include/OgreOdeSpace.h:105: error: ‘dSAP_AXES_YZX’ was not declared in this scope
../include/OgreOdeSpace.h:106: error: ‘dSAP_AXES_ZXY’ was not declared in this scope
../include/OgreOdeSpace.h:107: error: ‘dSAP_AXES_ZYX’ was not declared in this scope


details:
im using the svn trunk of both ogre and ogreode
im on ubuntu intrepid 64-bit, with its ode (0.9, included in svn was 0.5)

dermont

26-01-2009 06:27:15

Try using a more recent version of ode such as 0.10.1.

thebinaryblob

26-01-2009 19:00:15

alright, I downloaded, compiled, and installed ode successfully from svn
but now I get a new error when compiling ogreode

OgreOdeSpace.cpp:228: error: cannot convert
‘const std::set<Ogre::SceneQuery::WorldFragmentType, std::less<Ogre::SceneQuery::WorldFragmentType>,
Ogre::STLAllocator<Ogre::SceneQuery::WorldFragmentType, Ogre::CategorisedAllocPolicy<MEMCATEGORY_GENERAL> > >*’
to
‘const std::set<Ogre::SceneQuery::WorldFragmentType, std::less<Ogre::SceneQuery::WorldFragmentType>,
std::allocator<Ogre::SceneQuery::WorldFragmentType> >*’
in initialization

which is this line:
const std::set<Ogre::SceneQuery::WorldFragmentType> *supportedQueryTypes = _intersection_query->getSupportedWorldFragmentTypes();

dermont

27-01-2009 05:34:55

I think your problem is that ogre svn has been updated to use custom allocators in STL containers by default. Take a look at OgreSceneQuery.h/cpp getSupportedWorldFragmentTypes:


virtual const set<WorldFragmentType>::type* getSupportedWorldFragmentTypes(void) const
{return &mSupportedWorldFragments;}


You could try the following updates to see if it resolves you build problem:

OgreBody.cpp

list<Ogre::Plane>::type::const_iterator pi, piend;
//std::list<Ogre::Plane>::const_iterator pi, piend;


OgreSpace.cpp

//const std::set<Ogre::SceneQuery::WorldFragmentType> *supportedQueryTypes = _intersection_query->getSupportedWorldFragmentTypes();
//std::set<Ogre::SceneQuery::WorldFragmentType>::const_iterator it =
...
const set<Ogre::SceneQuery::WorldFragmentType>::type *supportedQueryTypes = _intersection_query->getSupportedWorldFragmentTypes();
set<Ogre::SceneQuery::WorldFragmentType>::type::const_iterator it =
...


Probably best to check with the developers first.