Я нахожусь на Clang/OS X Yosemite, и мой проект использовал Eigen fine. Затем я ввел внешнюю библиотеку, которая также использует Эйген и теперь у меня есть эта ошибка компиляции:Не могу понять, если это круговая зависимость или Clang
/usr/local/include/Eigen3/Eigen/src/Geometry/Quaternion.h:516:13: Implicit instantiation of undefined template 'Eigen::internal::quaternionbase_assign_impl<Eigen::Matrix<double, 3, 1, 0, 3, 1>, 3, 1>'
Это, кажется, исходит из декларации в библиотеке:
#include <Eigen/Eigen>
И это код, в котором Я использую кватернион:
Eigen::Quaternion<double> q, q_wv, q_ic, q_cv;
q_cv = _poseHandler->GetAttitudeMeasurement(); // problem here
Прежде всего, так что включать учитывает Ядра и геометрии, я не думаю, что это заголовок отсутствует. Тогда я не понимаю ошибку «неопределенного шаблона», потому что внутренний шаблон объявляется в том же заголовке, если вы заглянете в него. Поэтому у меня остается вопрос: что не так?
UPDATE:
Я изменил все в библиотеке использовать import
директиву вместо include
, но не решить проблему. Кроме того, если я импортирую <Eigen/Core>
в класс, который использует библиотеку, это нормально, но нет, если я импортирую <Eigen/Geometry>
.
Эта внешняя библиотека, которая также использует Eigen, включает заголовки Eigen, и может ли она использовать другую версию Eigen? – hvd
Нет, у меня есть источник библиотеки, включенный в мой проект, поэтому с использованием той же версии. – aledalgrande
Хм ... это может быть круговой. Запустите с параметром -E, посмотрите на предварительно обработанный вывод с помощью редактора. – kec