2009-07-20 12 views
5

Gdybym obejmują zarówno numeru GTEST/gtest.h i doładowania/math/rozkład/poisson.hpp uzyskaćC++ nazw kolizja z numeru GTEST i zwiększyć

/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 

Jak mogę zapobiec wyświetlaniu tych dwóch nazw bibliotek z kolizji?

Odpowiedz

9

Spróbuj zdefiniować budynek z BOOST_HAS_TR1_TUPLE. Wygląda na to, że zarówno boost, jak i twoje biblioteki std definiują std::tr1::tuple i nie widzę sposobu wyłączenia wersji std. Patrząc na nagłówek doładowania, wydaje się, że należy zdefiniować BOOST_HAS_TR1_TUPLE, aby powiedzieć, że std::tr1::tuple jest już zdefiniowane.

Mam podobne błędy do Ciebie, gdy próbowałem skompilować plik zawierający oba te nagłówki, a następnie zniknęły, gdy zdefiniowałem BOOST_HAS_TR1_TUPLE.

+0

To działało idealnie. – bias

+5

To zależy od wersji kompilatora i wersji gtest. GTest również definiuje własną krotkę, chyba że kompilatorem jest gcc 4+. Tak więc w tym przypadku boost użyje implementacji gtest, której prawdopodobnie nie chcesz. Ale możesz użyć krotki boost w gtest, ustawiając GTEST_USE_OWN_TR1_TUPLE na 0. – housemaister

2

Czy próbowałeś zmienić kolejność załączników? Jest możliwe, że inny plik nagłówka obsługuje trochę więcej wdzięku.

+0

Niestety, zmiana kolejności (od numeru GTEST/impuls do zwiększenia/numeru GTEST sprawia większy bałagan). – bias

1

Aby móc zawierać doładowania/math/rozkład/fisher_f.hpp w programie Microsoft Visual Studio 2010, I potrzebnych do zdefiniowania BOOST_NO_0X_HDR_TUPLE jak BOOST_HAS_TR1_TUPLE.

2

Z numeru GTEST ustawień GTEST_HAS_TR1_TUPLE 0 w gtest.h pomógł w moim przypadku

Powiązane problemy