我在默认情况下添加了几个不同版本的Eigen,包括Visual C ++的目录。
但是对于一些测试数值例子使用LDLT
(Cholesky分解)时,我遇到了崩溃问题。
所以我想在调试代码时确定哪个版本实际处于活动状态。
是否有任何功能可以指示当前有效的Eigen版本号?
答案 0 :(得分:30)
这个答案只是上述评论的摘要:
在编译时,您有EIGEN_WORLD_VERSION
,EIGEN_MAJOR_VERSION
和EIGEN_MINOR_VERSION
,您可以轻松地嵌入此信息
你的申请。
3.1.91
听起来像是beta version
的{{1}}。
版本号宏在位于的3.2
中定义
Macros.h
。
答案 1 :(得分:4)
要检查Eigen C ++模板库的版本号,只需输入
即可dpkg -p libeigen3-dev
在终端。 或者只需输入
pkg-config --modversion eigen3
你会得到Eigen版本。
答案 2 :(得分:3)
虽然这不是OP的目标,但是由于不同版本的Eigen的兼容性原因,发现这个问题的人可能会对检查版本是否等于特定版本更新感兴趣。使用EIGEN_VERSION_AT_LEAST(x, y, z)
宏可以更轻松地完成此操作,如下所示:
#if EIGEN_VERSION_AT_LEAST(3,3,0)
// Implementation for Eigen 3.3.0 and newer
#else
// Implementation for older Eigen versions
#endif
此宏也在Eigen/src/Core/util/Macros.h
中定义,并在内部使用EIGEN_WORLD_VERSION
,EIGEN_MAJOR_VERSION
和EIGEN_MINOR_VERSION
。
答案 3 :(得分:2)
在Linux上:
grep "#define EIGEN_[^_]*_VERSION" /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
您会得到类似的东西:
#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 3
#define EIGEN_MINOR_VERSION 7
表示版本3.3.7