我的问题类似于这个5岁question。
如果我使用以下代码,我可以成功编译它:
#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...>
后出错:
答案 0 :(得分:3)
您正在寻找的文件是<Eigen/Eigen>
。如果要包含<Eigen>
,则应在包含路径中添加正确的文件夹。
对于array_wrapper.hpp
,您需要更新版本的Boost。至少版本1.67.0有此文件。
答案 1 :(得分:3)
当您#include <Eigen>
时,您的编译器会查看您告诉它的目录,以查找名为Eigen
的文件。它只找到名为Eigen
的文件夹,并且该文件夹中的 有文件Eigen
和Dense
。 在该文件夹中看起来不是。
如果您更改编译器参数以包含Eigen
文件夹(而不是它的父级),则可以#include <Eigen>
和#include <Dense>
。或者,您可以按原样保留包含目录,并将Eigen/
添加到所有Eigen包含