不能同时包含Eigen和boost / regex

时间:2014-06-07 16:25:15

标签: c++ regex boost eigen

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

我的包含如下:

#include <boost/regex.hpp>
#include <Eigen>

我粘贴下面的前几个错误,其中有超过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

1 个答案:

答案 0 :(得分:5)

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

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

#include <Eigen/Eigen>

例如参见Getting Started sample。您应该修改包含路径以使用包含Eigen/头目录的目录,而不是将Eigen/目录放在包含路径上。