collegamento con una libreria che definisce il simbolo mancante (-lboost_system
) è la soluzione più ovvia, ma in Nel caso particolare di Boost.System, una disfunzione nel design originale lo rende inutilizzabile con boost::system::generic_category()
e boost::system::system_category()
. La compilazione con il flag -DBOOST_SYSTEM_NO_DEPRECATED
disabilita tale codice e consente di compilare un numero di programmi senza richiedere -lboost_system
(il collegamento è ovviamente ancora necessario se si utilizzano esplicitamente alcune funzionalità della libreria).
A partire da Boost 1.66 e this commit, questo comportamento è ora l'impostazione predefinita, quindi si spera che sempre meno utenti abbiano bisogno di questa risposta.
Come notato da @AndrewMarshall, un'alternativa è definire BOOST_ERROR_CODE_HEADER_ONLY
che abilita una versione di solo codice di intestazione. Tuttavia, questo è discouraged da Boost in quanto può rompere alcune funzionalità.
fonte
2015-06-16 20:38:30
Questo non è un errore del compilatore, è un errore _linker_. Devi collegarti alla libreria Boost.System. – ildjarn