UINT64 不是 boost 的成员

UINT64 is not a member of boost

我 运行 在 VS2012 下使用 boost 1_62_0 编译我们的一个程序时遇到了一些问题。我相信我以前曾在 VS2015 下进行过此编译(但无法验证这一点)。

我打开 /showIncludes 以了解问题到底出在哪里,并且我已将其缩小到包含 VS2012 中的 typeindex 包括:

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 message,我可以验证它在 cstdint.hpp

的 boost 命名空间中有 using ::uint64_t

关于如何解决这个问题有什么想法吗?

的确,这闻起来像一个 MACRO。

你应该找出哪个header定义了类似

的东西
#define uint64_t UINT64

您可以保存失败翻译单元的预处理器输出以找到它。