如果我同时包含 gtest/gtest.h 和 boost/math/distributions/poisson.hpp 我会得到
/opt/local/include/boost/tr1/tuple.hpp:63: error: ‘tuple’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:67: error: ‘make_tuple’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:68: error: ‘tie’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:72: error: ‘tuple_size’ is already declared in this scope
/opt/local/include/boost/tr1/tuple.hpp:73: error: ‘tuple_element’ is already declared in this scope
如何防止这两个库命名空间发生冲突?
最佳答案
尝试使用定义的 BOOST_HAS_TR1_TUPLE
进行构建。看起来 boost 和你的 std
库都在定义 std::tr1::tuple
而我看不到如何禁用 std
版本。查看 boost header ,虽然它似乎需要定义 BOOST_HAS_TR1_TUPLE
以告诉 boost std::tr1::tuple
已经定义。
当我尝试编译包含这两个 header 的文件时,我遇到了与您类似的错误,然后当我定义 BOOST_HAS_TR1_TUPLE
时它们消失了。
关于c++ 命名空间与 gtest 和 boost 的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1156003/