我将几个不同版本的Eigen添加到Visual C++默认目录中,但在一些测试数值示例中使用LDLT
(Cholesky分解)时出现了崩溃问题。
因此,我想确定调试代码时实际活动的版本是哪个。
是否有任何函数可以指示当前活动的Eigen版本号?
以下是评论的摘要:
在编译时,您可以使用EIGEN_WORLD_VERSION
、EIGEN_MAJOR_VERSION
和EIGEN_MINOR_VERSION
来获取版本信息,并将其嵌入到您的应用程序中。
3.1.91
听起来像是3.2
的beta版本
。
版本号宏定义在位于\Eigen\src\Core\util\
的Macros.h
中。
cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION
可以显示Eigen版本号。 - kebs为了检查Eigen C++模板库的版本号,只需输入
dpkg -p libeigen3-dev
在终端中。 或者只需输入
pkg-config --modversion eigen3
你会得到Eigen的版本。
虽然这不是问题的目标,但对于想要检查版本是否等于或者比特定版本更新以确保与不同版本的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
。
在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
EIGEN_WORLD_VERSION
、EIGEN_MAJOR_VERSION
和EIGEN_MINOR_VERSION
三个版本号,你可以轻松将这些信息嵌入到你的应用程序中。 - Marc Glisse3
、1
和91
,这是否意味着最新的版本是3.20
,因为没有发布3.191
的版本? - LCFactorization