Увеличьте ошибки компоновщика при использовании библиотек только для заголовка
Я использую следующие компоненты Boost 1.53.0 в сочетании с библиотеками C++11...
- повышение::signals2::scoped_connection
- повышение:: signals2:: сигнал
- повышение:: signals2:: связь
- повышение:: Math:: константы
- повышение::circular_buffer
- повышение::lexical_cast
Согласно этому ответу, мне не нужно связываться с библиотеками, чтобы использовать эти части Boost. Согласно этому ответу, сигналы2 также должны быть только заголовками. Тем не менее, я все еще получаю ошибки компоновщика...
Undefined symbols for architecture i386:
"boost::system::system_category()", referenced from:
___cxx_global_var_init2 in Main.o
...
"boost::system::generic_category()", referenced from:
___cxx_global_var_init in Main.o
___cxx_global_var_init1 in Main.o
...
Зачем?
2 ответа
Проблема была ложной
#include <boost/thread/mutex.hpp>
случайно оставлен в середине файла.
Boost.Signals2 действительно только для заголовков, а Boost.System - нет. Вы должны убедиться, что у вас нет никакой зависимости от этой библиотеки. Если это в вашем собственном коде, вы должны собрать Boost.System и ссылаться на него. Если он вызывается из любой библиотеки Boost только для заголовка, отправьте отчет об ошибке.