不能同时包含Eigen和boost/regex

Sil*_*ter 4 c++ regex boost eigen

我可以单独包含每个库,但是当我尝试同时包含它们时,我会遇到大量错误.我正在使用Boost v1_55_0和Eigen v3.2.1.知道问题可能是什么?

我的包括如下所示:

#include <boost/regex.hpp>
#include <Eigen>
Run Code Online (Sandbox Code Playgroud)

我正在粘贴下面的第一个错误,其中有超过100个.

Error   1   error C1189: #error :  The Eigen/Array header does no longer exist in Eigen3. All that functionality has moved to Eigen/Core.   c:\local\eigen\array    8   1   Project1
2   IntelliSense: #error directive: The Eigen/Array header does no longer exist in Eigen3. All that functionality has moved to Eigen/Core.  c:\local\Eigen\Array    8   4   Project1
3   IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\functional\hash\extensions.hpp  160 13  Project1
4   IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\functional\hash\extensions.hpp  162 5   Project1
5   IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\functional\hash\extensions.hpp  377 1   Project1
6   IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    59  7   Project1
7   IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    100 7   Project1
8   IntelliSense: identifier "name" is undefined    c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    108 24  Project1
9   IntelliSense: explicit type is missing ('int' assumed)  c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    111 4   Project1
10  IntelliSense: a type qualifier is not allowed on a nonmember function   c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    136 21  Project1
11  IntelliSense: a type qualifier is not allowed on a nonmember function   c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    146 33  Project1
12  IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    151 1   Project1
13  IntelliSense: expected a declaration    c:\local\boost_1_55_0\boost\regex\v4\basic_regex.hpp    153 1   Project1
Run Code Online (Sandbox Code Playgroud)

rha*_*oto 5

Boost包含了C++ 11 std::array标题,array但你的include路径正在Array从Eigen中获取标题(显然是过时的).您必须位于不区分文件的文件系统上.

似乎包含Eigen标头的正确方法是:

#include <Eigen/Eigen>
Run Code Online (Sandbox Code Playgroud)

请参阅" 入门"示例.您应该修改包含路径以使用包含Eigen/头目录的目录,而不是将Eigen/目录放在包含路径上.