Code::Blocks + OgreNewt

nextProblem

08-01-2009 22:17:32

Hello,

I'm rather new to Ogre and C++ and wanted to try OgreNewt.
After some Problems I got Ogre running, but OgreNewt produces many errors:
||=== OgreNewtTest, Debug ===|
||warning: auto-importing has been activated without --enable-auto-import specified on the command line.|
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTestC2Ev':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|9|undefined reference to `OgreNewt::World::World()'|
obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTestC1Ev':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|9|undefined reference to `OgreNewt::World::World()'|
obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTestD2Ev':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|14|undefined reference to `OgreNewt::World::~World()'|
obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTestD1Ev':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|14|undefined reference to `OgreNewt::World::~World()'|
obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTestD0Ev':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|14|undefined reference to `OgreNewt::World::~World()'|
obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTest11createSceneEv':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|29|undefined reference to `OgreNewt::CollisionPrimitives::Box::Box(OgreNewt::World const*, Ogre::Vector3 const&, Ogre::Quaternion const&, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|30|undefined reference to `OgreNewt::Body::Body(OgreNewt::World const*, OgreNewt::Collision const*, int)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|32|undefined reference to `OgreNewt::Body::attachToNode(Ogre::Node*)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|33|undefined reference to `OgreNewt::Body::setPositionOrientation(Ogre::Vector3 const&, Ogre::Quaternion const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|46|undefined reference to `OgreNewt::CollisionPrimitives::Cylinder::Cylinder(OgreNewt::World const*, float, float, Ogre::Quaternion const&, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|47|undefined reference to `OgreNewt::Body::Body(OgreNewt::World const*, OgreNewt::Collision const*, int)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|48|undefined reference to `OgreNewt::Body::attachToNode(Ogre::Node*)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|51|undefined reference to `OgreNewt::Body::setPositionOrientation(Ogre::Vector3 const&, Ogre::Quaternion const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|55|undefined reference to `OgreNewt::MomentOfInertia::CalcCylinderSolid(float, float, float)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|57|undefined reference to `OgreNewt::Body::setMassMatrix(float, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|58|undefined reference to `OgreNewt::Body::setStandardForceCallback()'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|70|undefined reference to `OgreNewt::CollisionPrimitives::Cone::Cone(OgreNewt::World const*, float, float, Ogre::Quaternion const&, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|71|undefined reference to `OgreNewt::Body::Body(OgreNewt::World const*, OgreNewt::Collision const*, int)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|72|undefined reference to `OgreNewt::Body::attachToNode(Ogre::Node*)'|
||Info: resolving Ogre::Quaternion::IDENTITY by linking to __imp___ZN4Ogre10Quaternion8IDENTITYE |
||Info: resolving Ogre::Vector3::ZERO by linking to __imp___ZN4Ogre7Vector34ZEROE |
||Info: resolving Ogre::Math::fDeg2Rad by linking to __imp___ZN4Ogre4Math8fDeg2RadE |
||Info: resolving Ogre::StringUtil::BLANK by linking to __imp___ZN4Ogre10StringUtil5BLANKE |
reNewtTest.cpp|75|undefined reference to `OgreNewt::Body::setPositionOrientation(Ogre::Vector3 const&, Ogre::Quaternion const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|79|undefined reference to `OgreNewt::MomentOfInertia::CalcCylinderSolid(float, float, float)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|80|undefined reference to `OgreNewt::Body::setMassMatrix(float, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|81|undefined reference to `OgreNewt::Body::setStandardForceCallback()'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|93|undefined reference to `OgreNewt::CollisionPrimitives::Box::Box(OgreNewt::World const*, Ogre::Vector3 const&, Ogre::Quaternion const&, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|94|undefined reference to `OgreNewt::Body::Body(OgreNewt::World const*, OgreNewt::Collision const*, int)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|95|undefined reference to `OgreNewt::Body::attachToNode(Ogre::Node*)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|98|undefined reference to `OgreNewt::Body::setPositionOrientation(Ogre::Vector3 const&, Ogre::Quaternion const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|102|undefined reference to `OgreNewt::MomentOfInertia::CalcBoxSolid(float, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|103|undefined reference to `OgreNewt::Body::setMassMatrix(float, Ogre::Vector3 const&)'|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|104|undefined reference to `OgreNewt::Body::setStandardForceCallback()'|
obj\Debug\OgreNewtTest.o||In function `_ZN12OgreNewtTest19createFrameListenerEv':|
(shortened)...OgreNewtTest\OgreNewtTest.cpp|125|undefined reference to `OgreNewt::BasicFrameListener::BasicFrameListener(Ogre::RenderWindow*, Ogre::SceneManager*, OgreNewt::World*, int)'|
||=== Build finished: 31 errors, 1 warnings ===|


That came up after I deleted the argument "mCamera" from this line: "mOgreNewtListener = new OgreNewt::BasicFrameListener( mWindow, mCamera, mSceneMgr, mWorld, 120 );" because OgreNewt::BasicFrameListener has no such parameter.

Here the whole code (from tutorial here: http://www.newtondynamics.com/wiki/inde ... ners_guide):
#include ".\ogrenewtapplication.h"
#include "ExampleFrameListener.h"

OgreNewtApplication::OgreNewtApplication(void)
{
mWorld = new OgreNewt::World();
}

OgreNewtApplication::~OgreNewtApplication(void)
{
delete mWorld;
}

void OgreNewtApplication::createScene()
{

////////////////////////////////////////////////////////////////////////////////

// make immobile floor element.
Ogre::Vector3 size(10.0,1.0,10.0);
Ogre::SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Ogre::Entity* ent = mSceneMgr->createEntity( "floorobj", "box.mesh" );
node->attachObject( ent );
node->setScale( size );

OgreNewt::Collision* col = new OgreNewt::CollisionPrimitives::Box( mWorld, size );
OgreNewt::Body* floorbody = new OgreNewt::Body( mWorld, col );

floorbody->attachToNode( node );
floorbody->setPositionOrientation( Ogre::Vector3(0,-5,0), Ogre::Quaternion::IDENTITY );
delete col;


// CYLINDER BODY
// cylinder with a radius of 0.5, height of 1.3
size = Ogre::Vector3( 1.3, 0.5, 0.5 );
node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
ent = mSceneMgr->createEntity("cylinder_body", "cylinder.mesh" );
node->attachObject( ent );
node->setScale( size );

// rigid body.
col = new OgreNewt::CollisionPrimitives::Cylinder( mWorld, 0.5, 1.3 );
OgreNewt::Body* bod = new OgreNewt::Body( mWorld, col );
bod->attachToNode( node );

// initial position
bod->setPositionOrientation( Ogre::Vector3(-2,3,2), Ogre::Quaternion::IDENTITY );
delete col;

Ogre::Real mass = 10.0;
Ogre::Vector3 inertia = OgreNewt::MomentOfInertia::CalcCylinderSolid( mass, 0.5, 1.3 );

bod->setMassMatrix( mass, inertia );
bod->setStandardForceCallback();


// CONE BODY
// cone with a radius of 0.8, height of 1.0
size = Ogre::Vector3( 1.0, 0.8, 0.8 );
node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
ent = mSceneMgr->createEntity("cone_body", "cone.mesh" );
node->attachObject( ent );
node->setScale( size );

// rigid body.
col = new OgreNewt::CollisionPrimitives::Cone( mWorld, 0.8, 1.0 );
bod = new OgreNewt::Body( mWorld, col );
bod->attachToNode( node );

// initial position
bod->setPositionOrientation( Ogre::Vector3(2,3,2), Ogre::Quaternion::IDENTITY );
delete col;

mass = 10.0;
inertia = OgreNewt::MomentOfInertia::CalcCylinderSolid( mass, 0.5, 1.3 );
bod->setMassMatrix( mass, inertia );
bod->setStandardForceCallback();


// BOX BODY
// standard 1x1x1 cube.
size = Ogre::Vector3( 1, 1, 1 );
node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
ent = mSceneMgr->createEntity("box_body", "box.mesh" );
node->attachObject( ent );
node->setScale( size );

// rigid body.
col = new OgreNewt::CollisionPrimitives::Box( mWorld, size );
bod = new OgreNewt::Body( mWorld, col );
bod->attachToNode( node );

// initial position
bod->setPositionOrientation( Ogre::Vector3(0,3,-2), Ogre::Quaternion::IDENTITY );
delete col;

mass = 10.0;
inertia = OgreNewt::MomentOfInertia::CalcBoxSolid( mass, size );
bod->setMassMatrix( mass, inertia );
bod->setStandardForceCallback();


////////////////////////////////////////////////////////////////////////////////

// create a light for the scene
Ogre::Light* light = mSceneMgr->createLight("light");
light->setPosition( Ogre::Vector3(0,15,5) );
light->setType( Ogre::Light::LT_POINT );

// position and point the camera
mCamera->setPosition( Ogre::Vector3( 0, 2, 10) );
mCamera->lookAt( Ogre::Vector3(0,0,0) );

}

void OgreNewtApplication::createFrameListener()
{
mFrameListener = new ExampleFrameListener( mWindow, mCamera );
mRoot->addFrameListener( mFrameListener );

mOgreNewtListener = new OgreNewt::BasicFrameListener( mWindow, mCamera, mSceneMgr, mWorld, 120 );
mRoot->addFrameListener( mOgreNewtListener );
}


I added every possible location in Linker and Search Directorys for Linker and Compiler...

Thanks a lot for help!

PJani

22-01-2009 18:57:44

im having the same problem and my problem is even worse becouse my project time is running out

PJani

23-01-2009 11:05:57

does enybody have compiled OgreNewt dll for Ogre 1.6 and Newton 1.53?

I tried to compile in Visual C++ 8 i tried to compile in Code::Blocks and i just dont get .dll i get .lib or .a but not any .dll

Please help i realy need this lib fast

or how to link static lib to code::blocks

PJani

23-01-2009 19:44:03

I succeed static linking of this lib in C::B