У меня возникли проблемы с компиляцией одной из наших программ с использованием boost 1_62_0 под VS2012. Я ранее имел это компиляцию под VS2015, я считаю (однако не могу проверить это).UINT64 не является членом boost
Я включил /showIncludes
, чтобы получить представление о том, где именно ее имея проблему, и я сузили его до включения typeindex
из VS2012 включает в себя:
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
Использование #pragma сообщение, я могу убедитесь, что он имеет using ::uint64_t
в пространстве имен boost в cstdint.hpp
Любые идеи о том, как исправить это?
':: uint64_t' конкретно относится к * глобальному * пространству имен, а не к форсированному - это то, что означает' :: '. –
Пахнет макро крышкой. Но первое, что вам нужно сделать, это найти 4-летнюю версию Boost. Ожидая, что 1.62 может работать на таком старом компиляторе, слишком оптимистично. Цель для ~ 1.53 –
@HansPassant. Сначала я исправлю проблему. Я уверен, что Boost не использует и не объявляет 'UINT64'. Кроме того, 1.62.0 по-прежнему отображает (частичную) поддержку VC8 (VS2005) – sehe