У меня есть простой заголовочный файл (VectorSpace.h), который включает библиотеку Eigen, векторный класс и функцию-член:
#include <Eigen/Eigen>
#include <string>
class vector {
public:
Eigen::Matrix<double,1,Eigen::Dynamic> vec;
double dot(const vector &that){
return (this->vec).dot(that.vec);
}
};
Я пытался предварительно скомпилировать этот заголовок, используя g++
g++ -std=c++11 -I../userlib/eigen VectorSpace.h
который генерирует VectorSpace.h.gch, но когда я пытаюсь скомпилировать основной код (который в основном является пустым main()):
g++ -std=c++11 -include VectorSpace.h code.o -o code
Я получаю следующую ошибку:
../userlib/eigen/Eigen/src/Core/DenseCoeffsBase.h:56:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
../userlib/eigen/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Product<Eigen::Block<Eigen::Matrix<double, -1, -1>, -1, -1, true>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1>, -1, 1, true>, -1, 1, false>, 0>, 0>’:
../userlib/eigen/Eigen/src/Core/DenseBase.h:41:34: required from ‘class Eigen::DenseBase<Eigen::Product<Eigen::Block<Eigen::Matrix<double, -1, -1>, -1, -1, true>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1>, -1, 1, true>, -1, 1, false>, 0> >’
Я делаю что-то не так или это потому, что Eigen не может быть предварительно скомпилирован? (У меня нет проблем с предварительной компиляцией заголовков стандартной библиотеки, просто когда я добавляю Eigen, я получаю сообщение об ошибке)