C++ c++;与gtest和boost的命名空间冲突

C++ c++;与gtest和boost的命名空间冲突,c++,boost,googletest,C++,Boost,Googletest,如果我同时包括gtest/gtest.h和boost/math/distributions/poisson.hpp,我得到 如何防止这两个库名称空间发生冲突?您是否尝试过切换包含的顺序?另一个头文件可能会处理得更优雅一些。尝试使用BOOST\u构建已定义的\u TR1\u元组。看起来boost和您的std库都在定义std::tr1::tuple,我看不出如何禁用std版本。查看boost头,但似乎需要定义boost\u有\u TR1\u TUPLE来告诉boost已经定义了std::TR1::T

如果我同时包括gtest/gtest.h和boost/math/distributions/poisson.hpp,我得到


如何防止这两个库名称空间发生冲突?

您是否尝试过切换包含的顺序?另一个头文件可能会处理得更优雅一些。

尝试使用
BOOST\u构建已定义的\u TR1\u元组。看起来boost和您的
std
库都在定义
std::tr1::tuple
,我看不出如何禁用
std
版本。查看boost头,但似乎需要定义
boost\u有\u TR1\u TUPLE
来告诉boost已经定义了
std::TR1::TUPLE


当我试图编译一个包含这两个标题的文件时,我遇到了与您类似的错误,然后当我在Microsoft Visual Studio 2010中定义了
BOOST\u HAS\u TR1\u TUPLE

以包含BOOST/math/distributions/fisher\u f.hpp>时,它们消失了,
我需要定义
BOOST\u NO\u 0X\u HDR\u TUPLE
以及
BOOST\u HAS\u TR1\u TUPLE

,使用gtest设置gtest\u HAS\u TR1\u TUPLE在gtest中为0。在我的情况下,h有帮助

不幸的是,更改顺序(从gtest/BOOST到BOOST/gtest会造成更大的混乱)。这取决于编译器版本和gtest版本。GTest也定义自己的元组,除非编译器是GCC4+。因此,在本例中,boost将使用gtest实现,这可能是您不想要的。但是您也可以通过将gtest_use_OWN_TR1_tuple设置为0来使用gtest中的boost元组。
/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