VS2010配置Eigen 3.4.0编译报错,寻求解决方案
VS2010 编译 Eigen 3.4.0 报错的解决方法
问题原因
Eigen 3.4.0 已停止对 VS2010(对应 MSVC 10.0)的支持。VS2010 的标准库未实现 rint 这类 C11 标准数学函数,且编译器对现代C特性的支持程度不足,直接导致编译时出现标识符未找到等错误。
可行解决方案
- 降级 Eigen 版本:选用 Eigen 3.3.x 系列版本,这是最后兼容 VS2010 的分支。下载对应版本后,按你原有的项目配置步骤操作即可正常编译。
- 临时补全缺失函数(不推荐):在项目的测试cpp文件最开头添加自定义的
rint实现,放在所有 Eigen 头文件引用之前:
注意:这种 workaround 仅能解决当前报错,后续可能触发其他兼容性问题,仅作为临时应急方案。#include <cmath> namespace std { inline double rint(double x) { return floor(x + 0.5); } inline float rint(float x) { return floorf(x + 0.5f); } inline long double rint(long double x) { return floorl(x + 0.5L); } } - 升级编译器:更换为 VS2015 及以上版本,这类版本对 C++11 及后续标准支持完善,可彻底解决此类编译器特性缺失问题。
内容的提问来源于stack exchange,提问作者sblyat
相关产品推荐
相关产品推荐

