Open CASCADE, the 3D modelling kernel
3D modeling & numerical simulation

Search the Forums
See All Topics
Open CASCADEShowroomGet it!Developer CornerSupport and ProductsAbout us
Technical overview
Areas of use
Advantages
FAQ
Screenshots
Shape factory
Shape gallery
Demonstrations
What's new
System requirements
Download Center
Public license
Documentation
Getting started
Forums
Open Source community
Training and e-learning
A-la Carte Support
Value-added software
Complementary Components
Customer Corner
Company Profile
Marketing Materials
Contact Us
News
Home / Developer Corner / Forums / Installation and building / Build 6.1 64 bits portability warnings

Build 6.1 64 bits portability warnings

Build 6.1 64 bits portability warnings
Michel Deschenes 2006/10/03 15:29
Hello all. When building OCC6.1 on a amd x64 with platform sdk version 14.00.40310.41, i get a LOT of 64 bits portability warnings like this:

c:\CAS6.1.0\ros\inc\gp.hxx(98) : warning C4267: 'argument' : conversion from 'si
ze_t' to 'const Standard_Integer', possible loss of data

or also:

c:\CAS6.1.0\ros\inc\Handle_Standard_Transient.hxx(39) : warning C4312: 'type cas
t' : conversion from 'unsigned int' to 'Standard_Transient *' of greater size

which seems that could cause problems... There is also code that applies to the DEC Alpha (with the __ALPHA define) which could apply also for an AMD64 like in Handle_Standard_Transient.hxx line 18.

We also need to fix a cast error in Standard_Address::HashCode to compile correctly.

So for those who builded OCC on 64 bits platform did you correct the warnings (like replacing the definition of Standard_Integer with an _int64 instead of int) or just ignored them? Or maybe i'm not using the correct download (i used OpenCASCADE_win32.exe version 6.1).

As for myself i ignored the warnings and some of our applications returns weird results but i need to debug them fully to confirm the cause.
Jan Brüninghaus 2006/10/03 19:40
Windows 64bit uses LLP64. http://en.wikipedia.org/wiki/ILP64#64-bit_data_models
This means, that integer and long are 32bit, but pointer are 64bit. So casting a pointer to long or int will loose information. If a adress larger than the maximal value of int/long is used and you cast it to int/long and back, strange thins will happen. If you have luck, it is directly a segmentation fault.
Michel Deschenes 2006/10/04 15:04
So this means that right out of the box OCC 6.1 doesn't support correctly win64 since i have a multitude of portability warnings trying to build it. What do you think?

Thanks for your help,
Michel
Jan Brüninghaus 2006/10/04 19:44
Yes, I think there are bugs, caused by incorrect use of types.

I think, all shoud work fine, if you don't have more memory than a integer can adress. But beyond that...

On Linux or Solaris 64bit should be similar problems, since int is there 32bit to.
 
 
Latest news
  • New features to enhance the development process
  • Open CASCADE Technology 6.7.1 is available for download!
  • Open CASCADE Technology 6.7.0 is available for download!

  • © OPEN CASCADE 2000 - 2014  |  Search  |  Contacts   |  Site map