NxOgre with MinGW and CodeBlocks

Illarion

29-11-2006 08:47:47

Hello,

I try to compile NxOgre under Windows XP using MinGW and CodeBlocks.
I import the projectfile nxOgre.VC8.vcproj under "{NxOgre-Home}\compiler" that contains all settings.

This is what I got, wheter I try to compile it in debug or release mode:

C:/PhysX/SDKs/Foundation/include/NxSimpleTypes.h:19: error: `__int64' does not name a type
C:/PhysX/SDKs/Foundation/include/NxSimpleTypes.h:24: error: `__int64' does not name a type
C:/PhysX/SDKs/Foundation/include/NxSimpleTypes.h:95: error: `size_t' was not declared in this scope
........

Over 50 Errors, no obj.-files created

I have installed
MinGW + CodeBlocks Nighly Build
Ogre 1.2.4 for MinGW
PhysX 6.11.01 SystemSoftware
PhysX 2.6.2
NxOgre 0.4RC2
and set the global environment variables for the paths like the installation guide on nxogre.org says.

Is it possible to get NxOgre compiled with that configuration ? Or do I have to use MS Visual C++ 2005 ? Has anybody managed to compile it using MinGW ?

I have searched for topics like this but found nothing useful.

Hope for responses...

betajaen

29-11-2006 09:36:49

I don't think anyone has tried.

However, I wonder if you defined or typedefed "__int64", and "size_t" by hand just before #include<NxPhysics.h> in NxOgre_includes.h

If you cross your fingers it may work ;)

Illarion

29-11-2006 10:37:52

Sorry, I am newbie, just don't know what exactly to typedef.

Is it possible that __int64 is a MS-specific type to use with Visual Studio ?

When I tried
typedef long long __int64;
there still is the following error:
C:/PhysX/SDKs/Foundation/include/NxSimpleTypes.h:24: error: `__int64' does not name a type
The first error is now removed, only using unsigned __int64 produced an error now.

I have no idea how to typedef the size_t :)
And even if I would got it I think I couldn't get it working 'cause there are several more errors, here is a small extract:

:: === nxOgre, Debug|Win32 ===
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:24: error: `__int64' does not name a type
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:95: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:97: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:98: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:99: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:100: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:101: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:102: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:103: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:104: error: `NxU64' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:104: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxSimpleTypes.h:108: error: `size_t' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxMath.h:745: error: `_asm' was not declared in this scope
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Foundation\include\NxMath.h:745: error: expected `;' before "fld"
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Physics\include\fluids\NxImplicitScreenMeshDesc.h:203: warning: comparison of unsigned expression < 0 is always false
C:\Project\dependencies\AGEIA_PhysX_SDK\SDKs\Physics\include\fluids\NxImplicitScreenMeshDesc.h:205: warning: comparison of unsigned expression < 0 is always false
C:\Project\dependencies\NxOgre\include\nxOgre_configuration.h:19: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_pose.h:153: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:195: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:196: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:198: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:199: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:200: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:201: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:202: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:204: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:205: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:207: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:208: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:209: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:211: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:213: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_includes.h:214: error: integer constant is too large for "long" type
C:\Project\dependencies\NxOgre\include\nxOgre_statemachine.h:73: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_statemachine.h:93: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_blueprint.h:38: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_body_blueprint.h:103: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_body.h:34: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_body.h:35: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_body.h:36: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_body.h:231: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_world_blueprint.h:54: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_body.h:231: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:51: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:52: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:53: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:54: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:55: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:326: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:379: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_material.h:46: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_material.h:83: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_world.h:41: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_world.h:42: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_world.h:331: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_world.h:331: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:36: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:37: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:38: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:39: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:40: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:41: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_scene.h:224: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_shape.h:379: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_params.h:84: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_shape_meshshape.h:52: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_group.h:33: error: a class-key must be used when declaring a friend
C:\Project\dependencies\NxOgre\include\nxOgre_group.h:56: warning: no newline at end of file
C:\Project\dependencies\NxOgre\include\nxOgre_error.h:64: error: cannot declare member function `NxUserOutputStream::print' within `nxOgre::error'
:: More errors follow but not being shown.
:: Edit the max errors limit in compiler options...
:: === Build finished: 50 errors, 19 warnings ===



It looks like I have to download the MS-Visual Studio now... :(

Thanks for your efforts !

betajaen

29-11-2006 11:10:49

Ouch, I thing MINGW is out then ;)

Visual Studio choice is better anyway, if you got it to compile there may be differences between the Visual Studio and MINGW NxOgre.dll that I wouldn't be able to fix, let alone diagnose.

Toby

30-11-2006 10:15:30

Hello, I tried it two days ago and same errors appears. You can modify NxOgre code and defined __int64 .. or only comment it in PhysX source.
For class key error for example it is:
in nxOgre: friend body
with MinGW you must replace by: friend class body

A function NxUserOutputStream::print() is redifined in error class and it is forbidden. I think you can remove it. Maybe.

Then I tried this modification but not completly. I use now visual C++ toolkit.

If you manage to do modifications I am interresting.
But you must know that if you want to call function into PhysX DLL by charging it you may have some errors. See other topic on it. I am not expert.

sebarnolds

05-12-2006 10:06:15

Yeah, it is pretty useless to try to compile NxOgre with MinGW because even PhysX is not compatible with MinGW (C++ DLL compiled with Visual Studio). There is a little hope because they are making it for Linux (thus compilable by GCC and MinGW). We ony can hope they release their Linux version soon and that they release a MinGW version...

A posted on Ageia forums about that MinGW version but got no answer from them.

Only time will tell us...

Seb

sebarnolds

07-12-2006 10:05:03

Hi everybody.

Just wanted to inform you that I received an answer from Ageia and there will be no MinGW support for the PhysX SDK.

Here is what they said :

Not likely in the near future. I'm happy to be getting a Linux SDK sometime in the near future that I can distribute.

Sure, we could ping the SDK with a few modifications to fix issues you guys bring up, but we're not using or testing the compiler internally, so it will never get tested and will be a nightmare for you to try to use as well as for us to support.


:(

Sebastien

Toby

07-12-2006 11:59:53

Yes we have experiment this nightmare. lol. And moreover NxOgre is optimized for visual to.