2016-11-22 3 views
1

У меня возникли проблемы с компиляцией одной из наших программ с использованием 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

Любые идеи о том, как исправить это?

+4

':: uint64_t' конкретно относится к * глобальному * пространству имен, а не к форсированному - это то, что означает' :: '. –

+2

Пахнет макро крышкой. Но первое, что вам нужно сделать, это найти 4-летнюю версию Boost. Ожидая, что 1.62 может работать на таком старом компиляторе, слишком оптимистично. Цель для ~ 1.53 –

+2

@HansPassant. Сначала я исправлю проблему. Я уверен, что Boost не использует и не объявляет 'UINT64'. Кроме того, 1.62.0 по-прежнему отображает (частичную) поддержку VC8 (VS2005) – sehe

ответ

3

Действительно, это пахнет МАКРО.

Вы должны выяснить, какой заголовок определяет что-то вроде

#define uint64_t UINT64 

Вы можете сохранить вывод препроцессора из неисправного блока перевода, чтобы найти это.

Смежные вопросы