Brad Mitchell
Brad Mitchell

Reputation: 276

UINT64 is not a member of boost

I'm running into some issues compiling one of our programs using boost 1_62_0 under VS2012. I've previously had this compiling under VS2015 I believe (however can't verify this).

I turned on /showIncludes to get an idea of where exactly its having the problem, and I've narrowed it down to inclusion of typeindex from the VS2012 includes:

Note: including file:          C:\PROGRA~2\MICROS~3.0\VC\include\crtdefs.h^M
Note: including file:        \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/limits.hpp^M
Note: including file:       \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/limits.hpp^M
Note: including file:       \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/type_traits/is_enum.hpp^M
Note: including file:       \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/type_traits/is_integral.hpp^M
Note: including file:       \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/utility/enable_if.hpp^M
Note: including file:       \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/cstdint.hpp^M
Note: including file:       C:\PROGRA~2\MICROS~3.0\VC\include\typeindex^M
\\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/functional/hash/hash.hpp(236) : error C2039: 'UINT64' : is not a member of 'boost'^M
\\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/functional/hash/hash.hpp(237) : error C2039: 'UINT64' : is not a member of 'boost'^M
Note: including file:       \\COMPILESERVER\BASENT\dev\lib\src\third_party\boost\boost_latest_win64_vs2012\boost/functional/hash/extensions.hpp^M

Using #pragma message, I can verify that it has using ::uint64_t within the boost namespace in cstdint.hpp

Any ideas on how to fix this?

Upvotes: 1

Views: 571

Answers (1)

sehe
sehe

Reputation: 393134

Indeed this smells like a MACRO.

You should find out which header defines something like

#define uint64_t UINT64

You can save the preprocessor output of the failing translation unit to find this.

Upvotes: 4

Related Questions