в моем текущем проекте я работаю с интерфейсом arpackpp. Вся библиотека написана в .h
файлах, поэтому нет необходимости компилировать библиотеку. Проблема, с которой я столкнулся сейчас, - когда я включаю некоторые из файлов заголовков arpackpp
в некоторые из моих файлов, которые не являются main.cpp
, я получаю следующие ошибки:
/.../Files/Includes/../../../arpack++/include/arerror.h:163: множественное определение
ArpackError::Set(ArpackError::ErrorCode, std::string const&)' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
std :: iterator_traits :: iterator_category std :: __ iterator_category (char * const &) ': / ... / Files / Includes /../../../ arpack ++ / include / arerror.h: 163: множественное определениеArpackError::code' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
std :: vector> :: max_size () const ':
для нескольких arpackpp
функций при связывании всех .o
файлов. Поскольку я читал в нескольких темах, проблема в том, что я фактически включаю создание экземпляров функций, чего обычно следует избегать. Поскольку я не хочу менять всю библиотеку, я включил все классы и функции, использующие arpackpp
классы в main.cpp
, что становится довольно запутанным. Есть ли способ решения этой проблемы? И почему не включены охранники (#ifndef...#endif)
, предотвращающие эту проблему?