VS 2015 Update 3 Compiler changes



  • On 21/07/2016 at 22:30, xxxxxxxx wrote:

    I recently updated VS 2015 (on Win10) to update 3.
    Unfortunately, I had to rollback to update 2 due to compilations errors.

    Maybe it was just a misconfiguration on my side, but trying various configurations didn't help.

    Anyone experienced the same problem? Or does anyone have some info about his?



  • On 22/07/2016 at 08:27, xxxxxxxx wrote:

    Hello,

    for R17 only VS 2013 is officially supported. I personally haven't used VS 2015 yet.

    Best wishes,
    Sebastian



  • On 25/07/2016 at 01:27, xxxxxxxx wrote:

    Ok, thanks for the heads up.



  • On 26/07/2016 at 04:38, xxxxxxxx wrote:

    Hey @mp5gosu,

    did you get errors like these?

    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C3861: 'typeof': identifier not found (compiling source file Source\BerconNoise\BerconNoiseShader.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1589) : error C3861: 'typeof': identifier not found (compiling source file Source\BerconNoise\BerconGradShader.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C3861: 'typeof': identifier not found (compiling source file Source\AproxGL.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C2974: '__vcrt_va_start_verify_argument_type': invalid template argument for '_Ty', type expected (compiling source file Source\BerconNoise\BaseVRayShader.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C2672: '__vcrt_va_start_verify_argument_type': no matching overloaded function found (compiling source file Source\BerconNoise\BerconNoiseShader.cpp)
    6>f:\microsoft visual studio\vs15preview\common7\ide\vc\include\vadefs.h(143) : note: see declaration of '__vcrt_va_start_verify_argument_type' (compiling source file Source\BerconNoise\BaseVRayShader.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1589) : error C2672: '__vcrt_va_start_verify_argument_type': no matching overloaded function found (compiling source file Source\BerconNoise\BerconGradShader.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1724) : error C3861: 'typeof': identifier not found (compiling source file Source\AixTeapot\TeaPot.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C2672: '__vcrt_va_start_verify_argument_type': no matching overloaded function found (compiling source file Source\AproxGL.cpp)
    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1676) : error C3861: 'typeof': identifier not found (compiling source file Source\BakeShader.cpp)
    

    I also tried upgrading to Upgrade 3, but the upgrade process somehow failed and I get the compilation
    errors above. I tried reinstalling VS 2015 without Upgrade 3 with no success (setup always fails).
    How did you downgrade to Update 2?

    -Niklas



  • On 26/07/2016 at 07:20, xxxxxxxx wrote:

    Yes, those are exactly the compiler errors.

    But on my side, VS upgraded just fine.
    Even projects that are not C4D-related compile well.

    I simply re-installed VS2015.2. (make settings backup, uninstall VS completely or try running the 2015.2 installer and hit "modify").

    (Un-)Installing VS is already a mess, there are often lots of leftovers around your hard drives that have to be cleaned manually. And by the way, make sure you do any VS operation with permissive rights.



  • On 26/07/2016 at 08:39, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    Hey @mp5gosu,
    did you get errors like these?

    6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C3861: 'typeof': identifier not found (compiling source file Source\BerconNoise\BerconNoiseShader.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1589) : error C3861: 'typeof': identifier not found (compiling source file Source\BerconNoise\BerconGradShader.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C3861: 'typeof': identifier not found (compiling source file Source\AproxGL.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C2974: '__vcrt_va_start_verify_argument_type': invalid template argument for '_Ty', type expected (compiling source file Source\BerconNoise\BaseVRayShader.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C2672: '__vcrt_va_start_verify_argument_type': no matching overloaded function found (compiling source file Source\BerconNoise\BerconNoiseShader.cpp)[/DIV][DIV]6>f:\microsoft visual studio\vs15preview\common7\ide\vc\include\vadefs.h(143) : note: see declaration of '__vcrt_va_start_verify_argument_type' (compiling source file Source\BerconNoise\BaseVRayShader.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1589) : error C2672: '__vcrt_va_start_verify_argument_type': no matching overloaded function found (compiling source file Source\BerconNoise\BerconGradShader.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1724) : error C3861: 'typeof': identifier not found (compiling source file Source\AixTeapot\TeaPot.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1651) : error C2672: '__vcrt_va_start_verify_argument_type': no matching overloaded function found (compiling source file Source\AproxGL.cpp)[/DIV][DIV]6>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstdio.h(1676) : error C3861: 'typeof': identifier not found (compiling source file Source\BakeShader.cpp)
    

    I also tried upgrading to Upgrade 3, but the upgrade process somehow failed and I get the compilation
    errors above<span style="line-height: 1.4;">. I tried reinstalling VS 2015 without Upgrade 3 with no success (setup always fails).</span>
    <span style="line-height: 1.4;">How did you downgrade to Update 2?</span>
    -Niklas

    If memory serves me well typeof was either a GCC extension only or a C language keyword (maybe also in boost, but I would have to look at).

    My sus**cion would be that the libs either have problems recognizing (or handling) a newer compiler version (number) or running into a problem where they are defaulting to the GCC code path.

    I'd check for big 3rd party libs/frameworks like Boost or usage of compiler features we don't recommend too...

    Best regards,

    Wilfried



  • On 28/07/2016 at 23:03, xxxxxxxx wrote:

    Yes, turned out that 'typeof' caused the issue. This is indeed a GCC extension. Using decltype should solve the issue.



  • On 08/08/2016 at 18:01, xxxxxxxx wrote:

    CINEMA 4D R15\resource\_api\c4d_misc\utilities\compilerdetection.h

    Add:

    #define _HAS_NOEXCEPT
    

    at line 62.

    To get it compiling with vs2015 update 3.

    Not sure which line in later versions. Where the windows compiler detection stuff goes.



  • On 09/08/2016 at 06:14, xxxxxxxx wrote:

    Thanks fused!

    That helps a lot. :)

    edit: Although not that good to mess with the framework. 
    Hope, that Maxon will have that on the radar for future updates.



  • On 09/08/2016 at 06:30, xxxxxxxx wrote:

    If you feel bad messing with the api, you can also put _HAS_NOEXCEPT in the preprocessor defs for the framework and you plugin.



  • On 09/08/2016 at 18:11, xxxxxxxx wrote:

    For R16

    in CINEMA 4D R16\frameworks\cinema.framework\source\c4d_misc\utilities\compilerdetection.h

    around line 89:

    #if _MSC_VER < 1800   
         #define _HAS_DECLTYPE   
    #endif
    

    Make sure it says this instead:

    #define _HAS_NOEXCEPT   
    #define _HAS_DECLTYPE
    

    R17 is probably similar. I'll get to that soon.



  • On 28/08/2016 at 00:56, xxxxxxxx wrote:

    Thanks for the hints. It would have taken me a long time to make sense of the errors.

    I want to add that in R17 I had to add the defines
    _HAS_EXCEPTIONS=0
    _HAS_DECLTYPE

    Edit: Same for R18



  • On 09/11/2016 at 08:27, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    If memory serves me well typeof was either a GCC extension only or a C language keyword (maybe also in boost, but I would have to look at).

    My sus**cion would be that the libs either have problems recognizing (or handling) a newer compiler version (number) or running into a problem where they are defaulting to the GCC code path.

    I'd check for big 3rd party libs/frameworks like Boost or usage of compiler features we don't recommend too...

    Best regards,

    Wilfried

    As a followup, I just want to note where the typeof issue came from in compilerdetection.h

    #ifndef _HAS_DECLTYPE
    	// try the GCC extension typeof
    	#define decltype typeof
    #endif
    

    Setting _HAS_DECLTYPE and _HAS_EXCEPTIONS=0 in the preprocessor macros works for me too.


Log in to reply