Eigen 的 unsupported/CXX11/Tensor 模块的编译错误

Compile errors of Eigen's unsupported/CXX11/Tensor module

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

1>C:\Program Files (x86)\Windows Kits.1\Include\um\minwinbase.h(46): error C3646: 'nLength': unknown override specifier
1>C:\Program Files (x86)\Windows Kits.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.1\Include\um\minwinbase.h(47): error C3646: 'lpSecurityDescriptor': unknown override specifier
1>C:\Program Files (x86)\Windows Kits.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.1\Include\um\minwinbase.h(48): error C3646: 'bInheritHandle': unknown override specifier
......
1>C:\Program Files (x86)\Windows Kits.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)引入的类型。我是不是做错了什么?

这似乎源于 <unsupported\Eigen\CXX11\Tensor>.

中的包含

我在这个线程 (Compile error in 'winbase.h' ) 的帮助下解决了它,并且只是将 <unsupported\Eigen\CXX11\Tensor> 中的第 38 行从 #include <winbase.h>#include <windows.h>.

交换了

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