编译Eigen不支持的/ CXX11 / Tensor模块的错误

时间:2016-02-15 13:31:29

标签: c++ compiler-errors eigen eigen3

我的项目使用 Eigen-3.3-beta 。我可以在包含<Eigen/Core>的visual studio 2015社区中构建我的项目。但是在我加入<unsupported\Eigen\CXX11\Tensor>后,我得到了类似的奇怪的编译错误:

1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h(46): error C3646: 'nLength': unknown override specifier
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h(46): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h(47): error C3646: 'lpSecurityDescriptor': unknown override specifier
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h(47): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h(48): error C3646: 'bInheritHandle': unknown override specifier
......
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h(295): fatal error C1003: error count exceeds 100; stopping compilation

似乎我的项目与 Eigen-3.3-beta 的正常部分正常工作,除了unsupported module。更重要的是,如果包含unsupported module,则 GLEW (例如GLfloat)引入的类型无法解析。我做错了吗?

1 个答案:

答案 0 :(得分:1)

这似乎源于<unsupported\Eigen\CXX11\Tensor>中的包含。

我在这个帖子(Compile error in 'winbase.h')的帮助下解决了这个问题,只是在<unsupported\Eigen\CXX11\Tensor>的{​​{1}}与#include <winbase.h>交换了第38行。

编辑:这似乎是它在存储库中的持续版本中修复的方式。