build error using MSVC in BulletMultiThread

screetch
Posts: 3
Joined: Sat Apr 19, 2008 10:19 am

build error using MSVC in BulletMultiThread

Post by screetch »

Hi,

I have tried to build Bullet using MSVC. The main bullet lib has been a piece of cake. then I had some troubles building BulletMultiThread :

Code: Select all

1>SpuRaycastTask.cpp
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(407) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(407) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(407) : error C2133: 'sign' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(408) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(408) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(408) : error C2133: 'rayInvDirection' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(409) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(409) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(409) : error C2133: 'lambda_max' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(514) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(514) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(514) : error C2133: 'quantizedQueryAabbMin' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(515) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(515) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(515) : error C2133: 'quantizedQueryAabbMax' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(516) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(516) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(516) : error C2133: 'rayFromInTriangleSpace' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(517) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(517) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(517) : error C2133: 'rayToInTriangleSpace' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(681) : warning C4018: '<' : signed/unsigned mismatch
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(689) : error C2057: expected constant expression
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(689) : error C2466: cannot allocate an array of constant size 0
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(689) : error C2133: 'tWorkUnitsOut' : unknown size
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(690) : warning C4018: '<' : signed/unsigned mismatch
1>..\..\src\3rdparty\bullet\src\BulletMultiThreaded\SpuRaycastTask\SpuRaycastTask.cpp(697) : warning C4018: '<' : signed/unsigned mismatch
These are the only errors I get.

The problem is that

Code: Select all

	unsigned int sign[numWorkUnits][3];
is not standard C++ code if numWorkers is not a constant.

I wasn't sure I had to build this file anyway on MSVC, but I saw a #ifdef WIN32 in this file which seems to indicate that this file is required.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA

Re: build error using MSVC in BulletMultiThread

Post by Erwin Coumans »

.\..\src\3rdparty\bullet\src\BulletMultiThreaded\

BulletMultiThreaded is located in the Extras folder for a reason: it is purely optional, so you don't need this module at all.

Which version of MSVC do you use?

Regardless, we should and will fix this error.
Thanks a lot for the feedback,
Erwin
screetch
Posts: 3
Joined: Sat Apr 19, 2008 10:19 am

Re: build error using MSVC in BulletMultiThread

Post by screetch »

the "strange" path comes from the custom build system I use. I simply removed the folder to build bullet without multi thread support (btw thanks for the clean folders, that saved me much trouble when integrating bullet into my build system, i can't say it was as easy to integrate mono for instance!!)

I have had this problem under visual studio 2005 (with and without SP1)
I can try under visual studio 2008 if needed.
XMunkki
Posts: 1
Joined: Thu Apr 24, 2008 4:32 pm

Re: build error using MSVC in BulletMultiThread

Post by XMunkki »

I've been bitten by this bug as well (MSVC 2005 with SP1). But it seems that if my search-in-solution went correctly, then the spu raycaster isn't used if I steer clear of SpuBatchRaycaster. So as a work around I figure I can just the normal serial raycaster.