Включить <Eigen / Dense> успешно, включить <Eigen> не удалось

Мой вопрос похож на этот 5-летний вопрос.

Я могу успешно скомпилировать его, если использую следующий код:

#include <Eigen/Dense>
#include <iostream>
//#include <boost/serialization/array_wrapper.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(){
        std::cout<<"asfserea"<<std::endl;
        boost::gregorian::date d(boost::gregorian::day_clock::local_day());
        std::cout << d.year() << d.month() <<d.day() << std::endl;
        return 0;
}

Но у меня возникли ошибки после того, как я изменил аннотацию с #include <Eigen/Dense> на #include <Eigen>, с #include <boost/date_time...> на #include <boost/serialization...>:

Включить &lt;Eigen / Dense&gt; успешно, включить &lt;Eigen&gt; не удалось

Почему вы хотите изменить заголовки, если ваш код компилируется в текущем состоянии?

Holt 12.06.2018 10:41

Я клонировал проект из github, и в его файле он использовал #include <Eigen>, а затем использовал typedef Eigen :: Matrix.etc.

jack 12.06.2018 10:45

Судя по вашему комментарию, у вас недоразумение. Изменение #include не влияет на необходимость квалификации Matrix с Eigen::.

acraig5075 12.06.2018 10:55

Предпочтительно #include <Eigen/Eigen>, а не добавление подпапки Eigen в ваш путь включения.

ggael 12.06.2018 20:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
370
2

Ответы 2

Ищете файл <Eigen/Eigen>. Если вы хотите включить <Eigen>, вы должны добавить правильную папку в свой путь включения.

Для array_wrapper.hpp вам потребуется более новая версия Boost. По крайней мере, версия 1.67.0 имеет этот файл.

Моя повышенная версия - 1_67_0, и в ней есть array_wrapper.hpp.

jack 12.06.2018 10:56

@jack Если #include <boost/date_time/gregorian/gregorian.hpp> работает, я предполагаю, что у вас уже есть Boost в вашем пути включения, поэтому #include <boost/serialization/array_wrapper.hpp> также должен работать. Вы уверены, что ваш путь включения ведет к правильной версии Boost, а не к более старой версии, в которой нет array_wrapper.hpp?

vll 12.06.2018 11:00

Я включил boost_1_67_0 / stage / lib в CPLUS_INCLUDE_PATH, я включил boost_1_67_0 в PATH

jack 12.06.2018 11:14

Когда вы используете #include <Eigen>, ваш компилятор ищет в каталогах, о которых вы ему сказали, файл с именем Eigen. Он находит только папка с именем Eigen, а в в этой папке есть файлы Eigen и Dense. Это не смотрит внутри этой папки.

Если вы измените параметры вашего компилятора, включив в него папку Eigen (а не ее родительскую), вы сможете это сделать с #include <Eigen> и #include <Dense>. В качестве альтернативы вы можете оставить свои каталоги include такими, какие они есть, и добавить Eigen/ ко всем подключаемым файлам Eigen.

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