NxOgre Compile Issues

deige101

16-04-2008 00:09:03

Hey all, I'm trying to compile NxOgre under Code::Blocks

NxOgre 1.0'21
Ogre 1.4.7
PhysX 8

-------------- Build: Release Win32 in NxOgre ---------------

Compiling: ..\source\BetajaenCC.cpp
In file included from C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:26,
from C:/OgreSDK/NxOgre//include/NxOgreStable.h:37,
from C:\OgreSDK\NxOgre\source\BetajaenCC.cpp:27:
C:/OgreSDK/NxOgre//include/BetajaenCC.h:119: error: `SharedAllocator' has not been declared
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::Flat<TypePtr, AllocatorType>::_delete_range(Type*, Type*)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:285: error: `NxOgre::Allocator' has not been declared
C:/OgreSDK/NxOgre//include/BetajaenCC.h:285: error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available
C:/OgreSDK/NxOgre//include/BetajaenCC.h:285: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::Flat<TypePtr, AllocatorType>::_destroy(Type*, Type*)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:294: error: `NxOgre::Allocator' has not been declared
C:/OgreSDK/NxOgre//include/BetajaenCC.h:294: error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::SharedMap<IdentifierType, BaseType, AllocatorType>::Each(void (Type::*)())':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1333: error: expected `;' before "iterator"
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1334: error: `iterator' was not declared in this scope
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::SharedMap<IdentifierType, BaseType, AllocatorType>::Each(void (Type::*)(_A), _A)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1351: error: expected `;' before "iterator"
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1352: error: `iterator' was not declared in this scope
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `Betajaen::Vector4< <template-parameter-1-1> >& Betajaen::Vector4< <template-parameter-1-1> >::operator*=(const Type&)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1590: error: expected `;' before '}' token
In file included from C:/OgreSDK/NxOgre//include/NxOgreStable.h:37,
from C:\OgreSDK\NxOgre\source\BetajaenCC.cpp:27:
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h: At global scope:
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:88: error: declaration of `class T'
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:79: error: shadows template parm `class T'
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:91: error: declaration of `class T'
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:79: error: shadows template parm `class T'
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:98: error: declaration of `class T'
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:79: error: shadows template parm `class T'
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h: In member function `NxOgre::WatchMyPointer<T>& NxOgre::WatchMyPointer<T>::operator=(T*)':
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:94: error: `NxOgre::Allocator' has not been declared
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:94: error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:94: error: must #include <typeinfo> before using typeid
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h: In member function `void NxOgre::Allocator::watch_ptr(T*, const char*, const char*, unsigned int, const char*)':
C:/OgreSDK/NxOgre//include/NxOgreAllocator.h:163: error: must #include <typeinfo> before using typeid
Process terminated with status 1 (0 minutes, 0 seconds)
21 errors, 0 warnings


I'm not sure where to go from here...
Do I need to modify the code just to get it to compile under Code::Blocks?
Please Help.

nord

20-04-2008 00:38:31

Sorry I dont have an answer to your problem.
But I also have a compiling problem. Since a similar topic has been created I did not want to pollute the forum.

Here is my problem...

at the end of the compilation it says
"
........
1>Performing Post-Build Event...
1>Copying DLL to CakeBox and Ogre Samples. Errors during copying process does not mean the library was built incorrectly.
1>Komut sözdizimi yanlış.(command wordsequence is wrong =)
1>Sistem belirtilen yolu bulamıyor.(system cannot find the specified path=)
1> 0 dosya kopyalandı. (0 files copied=)
1>Project : error PRJ0019: A tool returned an error code from "Performing Post-Build Event..."
1>Project : warning PRJ0018 : The following environment variables were not found:
1>$(PHYSX_DIR)
"

I can compile ogre cpp files and run them. Now I am trying to integrate ageia into ogre but I am stuck.

While answering this specific problem, could you also tell which things I should do in order to use physics in ogre?

things what I have done so far:
installed vs2005
installed prebuild OgreSDKSetup1.4.7_VC80p1
so far good.
i have installed PhysX_2.7.3_SDK_Core
i have installed TortoiseSVN-1.4.8.12137-win32-svn-1.4.6
and downloaded nxogre 0.9
i am trying to compile nxogre 0.9.

Then what should I do to run cake examples =)
Thanks a lot for both answers..

betajaen

20-04-2008 00:43:29

COUGH COUGH COUGH

"Copying DLL to CakeBox and Ogre Samples. Errors during copying process does not mean the library was built incorrectly. "

It's compiled. Move onto Cake.

nord

20-04-2008 00:59:04

even it says "success 0, failed 1" at the end of the compilation of nxogre I did as you told me and moved on =)

I have unzipped cakebox.zip file into the nxogre directory.

Then I clicked onto the Cakebox.VC8.Windows solution file. and pressed build solution.

but now it says
"
1>------ Build started: Project: Cakebox, Configuration: Debug Win32 ------
1>Compiling...
1>Cake.cpp
1>d:\nxogre 0.9\nxogre\tutorials\compiler\source\cake.h(951) : error C2248: 'NxOgre::World::mScenes' : cannot access protected member declared in class 'NxOgre::World'
1> d:\nxogre 0.9\nxogre\include\nxogreworld.h(218) : see declaration of 'NxOgre::World::mScenes'
1> d:\nxogre 0.9\nxogre\include\nxogreworld.h(36) : see declaration of 'NxOgre::World'
1>Project : warning PRJ0018 : The following environment variables were not found:
1>$(PHYSX_DIR)
1>Build log was saved at "file://D:\nxogre 0.9\NxOgre\tutorials\compiler\debug\BuildLog.htm"
1>Cakebox - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
"

sorry for so much questions =)

betajaen

20-04-2008 01:05:01

Theres something in the Cake thread about that.

deige101

20-04-2008 01:33:17

so noone knows whats up with my issue?

nord

20-04-2008 01:38:31

I looked at the cake thread. it says
"Either re-compile NxOgre, or copy the NxOgre.dll over into the tutorial directory. You'll need to copy the Ogre and PhysX dll's in there as well, do Debug and Release "

I searched for the NxOgre.dll in ageia, ogre, and nxogre directories. but I couldnt find it. Here is a link for the screenshot of my directory hierharchy.
Thanks a lot in advance =)

http://www.orenapart.com/tutorials.jpg



PS. I get the error:

1>------ Rebuild All started: Project: Cakebox, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'Cakebox', configuration 'Debug|Win32'
1>Compiling...
1>Cake.cpp
1>d:\nxogre 0.9\nxogre\tutorials\compiler\source\cake.h(951) : error C2248: 'NxOgre::World::mScenes' : cannot access protected member declared in class 'NxOgre::World'
1> d:\nxogre 0.9\nxogre\include\nxogreworld.h(218) : see declaration of 'NxOgre::World::mScenes'
1> d:\nxogre 0.9\nxogre\include\nxogreworld.h(36) : see declaration of 'NxOgre::World'
1>Project : warning PRJ0018 : The following environment variables were not found:
1>$(PHYSX_DIR)
1>Build log was saved at "file://D:\nxogre 0.9\NxOgre\tutorials\compiler\debug\BuildLog.htm"
1>Cakebox - 1 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

raptorsareyummy

20-04-2008 09:23:00

@deige101
I've managed to get the errors down to 4 with some changes. The following is what I did...

Swapped the following two lines in BetajaenCC.h:

template <class TypePtr, class AllocatorType = SharedAllocator> class Flat;
class SharedAllocator;

To look like this:

class SharedAllocator;
template <class TypePtr, class AllocatorType = SharedAllocator> class Flat;


I then put this in NxOgreAllocator.h:

#define NxWatchDelete ::NxOgre::Allocator::getPtr()->watch_delete(ptr);


...and then I changed BETAJAEN_CC_DELETE and BETAJAEN__CC_DESTRUCTOR in BetajaenCC.h:

#define BETAJAEN_CC_DELETE(ptr) \
{NxDelete(ptr);};

#define BETAJAEN_CC_DESTRUCTOR(ptr) NxWatchDelete(ptr);


I removed template<class T> from the following functions in NxOgreAllocator.h:

explicit NxTemplateFunction WatchMyPointer(T* _t) : ptr(_t) {}

NxTemplateFunction WatchMyPointer& operator=(T* _t) {...}

NxTemplateFunction operator T*() const {...}


I then swapped positions of the following two classes in NxOgreAllocator.h:
class NxPublicClass Allocator
class WatchMyPointer

Next, there's a semicolon missing from a statement in BetajaenCC.h(line 1590), so fix it up:

BETAJAEN_CC_INLINE ThisType& operator *= (const Type& other)
{
i *= other; j *= other; k *= other; l *= other;
}

And the final change I made was to add the following to NxOgreAllocator.h:

#include <typeinfo>


All of that leaves me with the following errors:

C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::SharedMap<IdentifierType, BaseType, AllocatorType>::Each(void (Type::*)())':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1333: error: expected `;' before "iterator"
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1334: error: `iterator' was not declared in this scope
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::SharedMap<IdentifierType, BaseType, AllocatorType>::Each(void (Type::*)(_A), _A)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1351: error: expected `;' before "iterator"
C:/OgreSDK/NxOgre//include/BetajaenCC.h:1352: error: `iterator' was not declared in this scope


Of course, who knows if that's all right! I'm pretty rusty with templates these days. :D I'm actually trying to get this running on a linux box, so any help is welcome.

betajaen

20-04-2008 11:10:33

Thanks for the heads up. I'll submit your changes and anything else you will post.

raptorsareyummy

20-04-2008 13:48:04

Sure, I'm anxious to get this up and running. :)

Although, this doesn't seem to have worked:

I then put this in NxOgreAllocator.h:

#define NxWatchDelete ::NxOgre::Allocator::getPtr()->watch_delete(ptr);


...and then I changed BETAJAEN_CC_DELETE and BETAJAEN__CC_DESTRUCTOR in BetajaenCC.h:

#define BETAJAEN_CC_DELETE(ptr) \
{NxDelete(ptr);};

#define BETAJAEN_CC_DESTRUCTOR(ptr) NxWatchDelete(ptr);


It creeps up again later with a "not declared in this scope" error, but I see a couple of other things that need a small fix.

In NxOgreDualIdentifier.h(line 48 ):

NxTemplateFunction DualIdentifier(Second second, First first)
: first(_first), second(_second), firstSet(true), secondSet(true) {}

The function parameters need to be modified to _second and _first

GCC complains about template shadowing again. I think the template part can be removed here in NxOgreContactCallback.h(line 83):

template <class TargetClass>
explicit ContactPtrCallback(TargetClass* _instance, ContactFunctionPtr _function_ptr){ ..}


This error pops up in NxOgreGroup.h:

../include/NxOgreGroup.h: In constructor `NxOgre::GroupCallback::GroupCallback(T*, void (T::*)(NxOgre::Actor*, NxOgre::Actor*), void (T::*)(NxOgre::Actor*, NxOgre::Actor*), void (T::*)(NxOgre::Actor*, NxOgre::Actor*))':
../include/NxOgreGroup.h:110: error: expected primary-expression before "bool"
../include/NxOgreGroup.h:110: error: `callbackOwned' was not declared in this scope

Which is caused by this:
template <typename T> explicit
GroupCallback(T* v,
void (T::*Start)(Actor*, Actor*),
void (T::*End)(Actor*, Actor*),
void (T::*Touch)(Actor*, Actor*))
: mCallback(new TriMethodCallback<T>(v, Start, End, Touch), bool callbackOwned),mCallbackOwned(callbackOwned) {}


I hope that helps. Is anyone having any luck with GCC?

nord

21-04-2008 01:05:48

Thank you very much. I solved the compilation problem of nxogre by adding the environment variable PHYSX_DIR C:\Program Files\AGEIA Technologies\SDK\v2.7.3 to my computer > properties of windows xp.

To solve cakebox compilation problem I replaced the
Code:

mWorld->mScenes.get(....);

with:

Code:
mWorld->getScenes()->get(....);

as told in cake thread. Everything works fine. =)

Tsh't

22-04-2008 07:33:24

Hello. I also tried to compile on GCC, was stopped at same error


mCallback(new TriMethodCallback<T>(v, Start, End, Touch), bool callbackOwned),mCallbackOwned(callbackOwned) {}


because I don't know what Betajean wants for callbackowned value...

However I think you forgot the _asm trouble. I changed this on NxMath.h


#ifdef [b]_MSC_VER[/b]
NxF32 localCos, localSin;
NxF32 local = f;
_asm fld local
_asm fsincos
_asm fstp localCos
_asm fstp localSin
c = localCos;
s = localSin;
#else
c = cosf(f);
s = sinf(f);

instead of WIN32.

For BETAJAEN_CC_DELETE you can also rem out the first define, the second one will use "delete ptr" instead. Do you need memory check when compiling in release ?

For the "shadow template", without supressing template TargetClass you can change for example to :
template <class TargetClassB>

Last thing I add to add :
betajeanCC.h, line 1248

typedef Type* TypePtr;
typedef Tree<IdentifierType, Type> TreeType;
typedef TreeType* TreePtr;
typedef typename TreeType::NodeIterator node_iterator;


Then :

BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)()) {

if (_Tree->isEmpty())
return;

node_iterator ite;


TypePtr ptr = _Tree->First(&ite);

while (ptr != 0) {
(ptr->*MethodPtr)();
ptr = _Tree->Next(&ite);
}
}

This must be an issue with GCC...

Tsh't

22-04-2008 20:58:25

Note : after this I only had some "shadow templates" and a _malloc_dbg undefined I replaced by a "#ifdef _MSC_VER _malloc_dbg bla bla #else malloc". Then it seems it compiled ;)

raptorsareyummy

23-04-2008 00:37:43

Tsh't, thanks for the info.

What did you do to get rid of these errors?

C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::Flat<TypePtr, AllocatorType>::_delete_range(Type*, Type*)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:285: error: `NxOgre::Allocator' has not been declared
C:/OgreSDK/NxOgre//include/BetajaenCC.h:285: error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available
C:/OgreSDK/NxOgre//include/BetajaenCC.h:285: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
C:/OgreSDK/NxOgre//include/BetajaenCC.h: In member function `void Betajaen::Flat<TypePtr, AllocatorType>::_destroy(Type*, Type*)':
C:/OgreSDK/NxOgre//include/BetajaenCC.h:294: error: `NxOgre::Allocator' has not been declared
C:/OgreSDK/NxOgre//include/BetajaenCC.h:294: error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available

Tsh't

23-04-2008 06:55:59

First, you may put -fpermissive option.

Then, I think the error is because BetajaenCC.h is included at the beginning of NxOgreAllocator.h. I tried to put a forward declaration of NxOgre::Allocator, but gcc complained about "incomplete type" (maybe because it needs definition of getPtr)

I think you could rem out this, then create another .h with the declaration of the sharedlist and a cpp with definitions... Because if you rem out inclusion of betajeanCC.h in the allocator, this is sharedlist which is undefined.

But the quick fix I did is this :

/** \brief Delete macro. Used if you have your own leak checker, etc.
*/
/*#define BETAJAEN_CC_DELETE(ptr) \
{::NxOgre::Allocator::getPtr()->watch_delete(static_cast<void*>(ptr));}; \
delete ptr;
*/
/** \brief Called just before when a class is destroyed using it's destructor.
*/
/*#define BETAJAEN_CC_DESTRUCTOR(ptr) \
::NxOgre::Allocator::getPtr()->watch_delete(begin);
*/


No problem other than possible leaks not checked, because lower, you will find these lines (thoses are already present) :

#ifndef BETAJAEN_CC_DELETE
# define BETAJAEN_CC_DELETE(ptr) delete ptr;
#endif

#ifndef BETAJAEN_CC_DESTRUCTOR
# define BETAJAEN_CC_DESTRUCTOR(ptr)
#endif

betajaen

23-04-2008 10:09:26

If you guys are having some trouble with the Allocator, more especially the WatchedPtr classes and functions. You are more than welcome to disable them using (#ifdef NX_LINUX), as you can probably see it is only used in Debug mode and not really important if that.

I'm more concerned about the BetajaenCC errors that are popping up.

Tsh't

24-04-2008 06:33:59

For the "shadow param" issue, I think it's because you can't define twice the same template in the same scope, for what I read somewhere.
e.g. :

template <typename T>
class A
{
template <typename T> //Anything BUT the previous T
xxxx
{
}
};

So I think, either you use the same instanciated type, or a new template... For constructors, I also suppose you don't have to put the template declaration stuff.

for

typedef typename TreeType::NodeIterator node_iterator;

in my case, this is GCC which couldn't understand that "TreeType::NodeIterator" was a type alone ! Hence the explicit typename... Silly gcc.

raptorsareyummy

24-04-2008 20:43:17

For the shadow template, you're correct. You can't redeclare a template parameter within its scope. I removed them b/c it didn't look like they were needed.

Also, for linux I had to change this in BetajaenCC.h:

#define BETAJAEN_CC_CLASS_EXPORT __declspec(dllexport)

to:

#ifdef LINUX
#define BETAJAEN_CC_CLASS_EXPORT
#else
#define BETAJAEN_CC_CLASS_EXPORT __declspec(dllexport)
#endif


I don't really know what's needed there. Perhaps __attribute__ (something)

Also, for my linux box, I had to put this somewhere:

#ifdef linux
#define LINUX
#endif

I had to change some of the PhysX headers as well, but I'm not at home right now to post the changes I had to make. Nothing major...just some #elif statements that needed to be #elif defined

Anybody figure out what was expected here for callbackOwned?

template <typename T> explicit
GroupCallback(T* v,
void (T::*Start)(Actor*, Actor*),
void (T::*End)(Actor*, Actor*),
void (T::*Touch)(Actor*, Actor*))
: mCallback(new TriMethodCallback<T>(v, Start, End, Touch), bool callbackOwned),mCallbackOwned(callbackOwned) {}

locksleyu

07-08-2008 14:39:51

deige101, Did you ever get everything compiling smoothly? I am getting most of the same errors as you.

Thanks.

Innopeor

06-09-2008 00:04:38

Ogre version: 1.6.0RC1 ('Shoggoth')
Physx version: 2.8.1
C++ IDE: CodeBlocks
NxOgre: 1.0 '21

C:\OgreSDK\include\BetajaenCC.h||In member function `void Betajaen::Flat<TypePtr, AllocatorType>::_delete_range(Type*, Type*)':|
C:\OgreSDK\include\BetajaenCC.h|285|error: `NxOgre::Allocator' has not been declared|
C:\OgreSDK\include\BetajaenCC.h|285|error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available|
C:\OgreSDK\include\BetajaenCC.h|285|error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)|
C:\OgreSDK\include\BetajaenCC.h||In member function `void Betajaen::Flat<TypePtr, AllocatorType>::_destroy(Type*, Type*)':|
C:\OgreSDK\include\BetajaenCC.h|294|error: `NxOgre::Allocator' has not been declared|
C:\OgreSDK\include\BetajaenCC.h|294|error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available|
C:\OgreSDK\include\BetajaenCC.h||In member function `void Betajaen::SharedMap<IdentifierType, BaseType, AllocatorType>::Each(void (Type::*)())':|
C:\OgreSDK\include\BetajaenCC.h|1333|error: expected `;' before "iterator"|
C:\OgreSDK\include\BetajaenCC.h|1334|error: `iterator' was not declared in this scope|
C:\OgreSDK\include\BetajaenCC.h||In member function `void Betajaen::SharedMap<IdentifierType, BaseType, AllocatorType>::Each(void (Type::*)(_A), _A)':|
C:\OgreSDK\include\BetajaenCC.h|1351|error: expected `;' before "iterator"|
C:\OgreSDK\include\BetajaenCC.h|1352|error: `iterator' was not declared in this scope|
C:\OgreSDK\include\BetajaenCC.h||In member function `Betajaen::Vector4< <template-parameter-1-1> >& Betajaen::Vector4< <template-parameter-1-1> >::operator*=(const Type&)':|
C:\OgreSDK\include\BetajaenCC.h|1590|error: expected `;' before '}' token|
C:\OgreSDK\include\NxOgreAllocator.h|88|error: declaration of `class T'|
C:\OgreSDK\include\NxOgreAllocator.h|79|error: shadows template parm `class T'|
C:\OgreSDK\include\NxOgreAllocator.h|91|error: declaration of `class T'|
C:\OgreSDK\include\NxOgreAllocator.h|79|error: shadows template parm `class T'|
C:\OgreSDK\include\NxOgreAllocator.h|98|error: declaration of `class T'|
C:\OgreSDK\include\NxOgreAllocator.h|79|error: shadows template parm `class T'|
C:\OgreSDK\include\NxOgreAllocator.h||In member function `NxOgre::WatchMyPointer<T>& NxOgre::WatchMyPointer<T>::operator=(T*)':|
C:\OgreSDK\include\NxOgreAllocator.h|94|error: `NxOgre::Allocator' has not been declared|
C:\OgreSDK\include\NxOgreAllocator.h|94|error: there are no arguments to `getPtr' that depend on a template parameter, so a declaration of `getPtr' must be available|
C:\OgreSDK\include\NxOgreAllocator.h|94|error: must #include <typeinfo> before using typeid|
C:\OgreSDK\include\NxOgreAllocator.h||In member function `void NxOgre::Allocator::watch_ptr(T*, const char*, const char*, unsigned int, const char*)':|
C:\OgreSDK\include\NxOgreAllocator.h|163|error: must #include <typeinfo> before using typeid|
C:\OgreSDK\include\NxOgreStable.h|55|OgreNoMemoryMacros.h: No such file or directory|
C:\Programmi\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\Foundation\include\NxMath.h|744|error: `_asm' was not declared in this scope|
C:\Programmi\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\Foundation\include\NxMath.h|744|error: expected `;' before "fld"|
C:\OgreSDK\include\NxOgreStable.h|62|OgreMemoryMacros.h: No such file or directory|
||=== Build finished: 24 errors, 0 warnings ===|

Tsh't

06-09-2008 00:12:40

I managed to compile some time, but then had trouble after first call of NxOgre to PhysX DLL. Exception.
I would say I don't know how to mix these MinGW and Windows lib. For now I'm juste compiling with Visual 2008 express and windows libs, and #ifdef for linux :(

Innopeor

06-09-2008 04:55:41

I uninstalled NxOgre because doesn't work...

betajaen

06-09-2008 08:45:21

I uninstalled NxOgre because doesn't work...

Actually it does work. Your just using an unofficial, untested compiler and IDE. We all use Visual Studio around here for one reason - it's standard and all of our libraries and code are built for it.

Innopeor

06-09-2008 15:18:52

I uninstalled NxOgre because doesn't work...

Actually it does work. Your just using an unofficial, untested compiler and IDE. We all use Visual Studio around here for one reason - it's standard and all of our libraries and code are built for it.


No codeblocks, no party... usually i compile my tools only with gcc.
Thanks for your answer, anyway..

betajaen

06-09-2008 15:40:59

The thing is; if you want to do Windows programming, then you use the IDE created by the same company that wrote the operating system.

Not only that; how many games companies do you think use CodeBlocks as a primary IDE and compiler?

I'm just going with the norm here, and CodeBlocks isn't it.

Innopeor

06-09-2008 18:18:48

The thing is; if you want to do Windows programming, then you use the IDE created by the same company that wrote the operating system.

Not only that; how many games companies do you think use CodeBlocks as a primary IDE and compiler?

I'm just going with the norm here, and CodeBlocks isn't it.


Hmm.. personally i don't believe this :-)
Gcc works very well in my Windows OS, why at world i have to change my entire project based on gcc to using an incompatible code with it? Why i have to install a ton of GB with VC++ when i can compile the same thing with 10 MB with CodeBlocks?
I'm not a games company, but an example: Valve intend to port Half Life 2 on Linux, what IDE they're using to porting it? I don't think VC++, it isn't the only C++ IDE at world.
I think a code have to be always accessible for cross-compiling.

PS. I'm sorry for my English, i hope it's comprensible..

betajaen

06-09-2008 18:34:38

GCC is the norm on Linux, if Valve wanted to port Half-Life over to Linux they would do so - which proves my point.

You can download the compiler seperatly from Microsoft if you want to; those gigabytes of files are just headers and libraries for common components of Windows. You have to do the same with CodeBlocks on Linux; but no doubt it's already on your computer once you installed your OS.

But I really don't see the point of using a different IDE; when the 3D library uses Visual Studio, so does the Physics wrapper and does the Physics library - it just adds unnecessary stress and development time.