Увеличьте ошибки компоновщика при использовании библиотек только для заголовка

Я использую следующие компоненты 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 только для заголовка, отправьте отчет об ошибке.

Другие вопросы по тегам