[MOAB-dev] MOAB build on windows

Jason Kraftcheck kraftche at cae.wisc.edu
Thu Aug 20 15:26:47 CDT 2009


James Porter wrote:
> On Thu, 2009-08-20 at 14:30 -0400, Alfred von Loebbecke wrote:
>> James Porter wrote:
>>> On Thu, 2009-08-20 at 13:40 -0400, Alfred von Loebbecke wrote:
>>>   
>>>> Hi Jim,
>>>> thank you for your response.
>>>> the thing is that visual studio 2005 is requesting the use of of the 
>>>> /clr switch
>>>> in a number of places when building MOAB. for example:
>>>>
>>>>
>>>> MBRange.cpp
>>>> c:\win_xp_create_mg\3rd_party\moab\MBRange.hpp(664) : error C4980: 
>>>> '__value' : use of this keyword requires /clr:oldSyntax command line option
>>>> c:\win_xp_create_mg\3rd_party\moab\MBRange.hpp(664) : error C3630: error 
>>>> when processing the token '__value'
>>>> c:\win_xp_create_mg\3rd_party\moab\MBRange.hpp(664) : fatal error C1190: 
>>>> managed targeted code requires a '/clr' option
>>>> MBOrientedBoxTreeTool.cpp
>>>>     
>>> That's a bug in MOAB (sort of). "__value" is a keyword[1] in MSVC, so it
>>> won't compile because it knows that keyword can't be used without
>>> managed code. It can't be used *with* managed code in that context
>>> either, since it won't parse correctly.
>>>
>>> It's not technically legal for us to prefix identifiers with two
>>> underscores, since that's reserved for compiler authors, so I've changed
>>> it in SVN. If you don't want to use the latest SVN build, you can just
>>> change "__value" to "value" on that line and on line 666.
>>>
>>> - Jim
>>>
>>> [1] http://msdn.microsoft.com/en-us/library/k7kkeb76.aspx
>>>   
>> ok, thank you, that worked well.
>> I don't have access to the MOAB svn but I'll ask my colleague (Clinton  
>> Stimpson)
>> if he can get me the newest source. In the meantime I'd appreciate any 
>> tips for the
>> three remaining errors:
>>
>> ..\..\..\Win_XP_Create_MG\3rd_party\MOAB\MBSysUtil.cpp(20) : error 
>> C2146: syntax error : missing ';' before identifier 'uint16_t'
>> ..\..\..\Win_XP_Create_MG\3rd_party\MOAB\MBSysUtil.cpp(20) : error 
>> C4430: missing type specifier - int assumed. Note: C++ does not support 
>> default-int
>>
>> c:\win_xp_create_mg\3rd_party\moab\MBMatrix3.hpp(255) : error C3861: 
>> 'finite': identifier not found
>>
>> thank you and regards,
>> Alfred
>>
>>
> 
> The first two errors can be resolved by adding "typedef unsigned __int16
> uint16_t;" somewhere near the top of the file (it may be necessary to
> put it in a common header somewhere in MOAB).

#ifdef _MSC_VER
typedef unsigned _int16 uint16_t
#endif

  The last one can be
> resolved by adding a single underscore before "finite". These are a
> little bit harder to fix in general than the previous errors, but I'll
> figure something out.
> 

#ifdef _MSC_VER
#define finite _finite
#endif

- jason


More information about the moab-dev mailing list