C ++ collisione spazio dei nomi con GTEST e spinta
-
18-09-2019 - |
Domanda
Se includo sia GTEST / gtest.h e boost / math / distribuzioni / poisson.hpp ho
/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
Come posso evitare di questi due spazi dei nomi di libreria da collisione?
Soluzione
Provare a costruire con BOOST_HAS_TR1_TUPLE
definito. Sembra che sia spinta e le librerie std
stanno definendo std::tr1::tuple
e non riesco a vedere come disattivare la versione std
. Guardando l'intestazione spinta anche se sembra che BOOST_HAS_TR1_TUPLE
deve essere definita a dire spinta che std::tr1::tuple
è già definito.
ho ottenuto gli errori simili ai tuoi, quando ho provato a compilare un file tra cui entrambe le intestazioni e poi sono scomparsi quando ho definito BOOST_HAS_TR1_TUPLE
.
Altri suggerimenti
Hai provato il passaggio all'ordine del include? E 'possibile l'altro file di intestazione gestisce le cose un po' più di garbo.
Con l'impostazione GTEST GTEST_HAS_TR1_TUPLE a 0 in gtest.h aiutato nel mio caso
Per essere in grado di includere boost / math / distribuzioni / fisher_f.hpp in Microsoft Visual Studio 2010,
Avevo bisogno di definire BOOST_NO_0X_HDR_TUPLE
così come BOOST_HAS_TR1_TUPLE
.