eigen 安装 Windows:从下载到编译,一篇讲清楚
目标关键词:eigen 安装 windows
如果你在做 C++ 开发、机器视觉、算法优化、图像处理,或者只是想把 Eigen 这个轻量级线性代数库装到 Windows 上用起来,这篇文章基本就够了。
Eigen 本身不是那种“点下一步就能安装”的传统软件,它更像是一个头文件库,重点不是“安装程序”,而是下载、配置、引用、编译测试。很多新手第一次在 Windows 上用 Eigen,会卡在:到底要不要安装、怎么配置、VS 里怎么加路径、CMake 怎么写、编译报错怎么处理。下面我按最实用的方式一步一步讲清楚。
一、Eigen 是什么,为什么很多人会在 Windows 上搜“安装”
Eigen 是一个开源的 C++ 线性代数库,常用来做:
- 矩阵运算
- 向量计算
- 几何变换
- 最小二乘、特征值分解
- 机器人、视觉、控制、科学计算
它最大的特点是:
-
纯头文件库
- 不需要像某些软件那样单独安装运行库
- 你下载下来后,核心就是一堆
.h文件
-
跨平台
- Windows、Linux、macOS 都能用
-
性能强
- 经过大量模板和表达式优化,适合高性能计算
所以大家说的“eigen 安装 windows”,准确点说其实是:
- 在 Windows 上获取 Eigen
- 配置到 Visual Studio / CMake 工程里
- 让代码能正常
#include并编译通过
二、Windows 上安装 Eigen 的几种方式
方式 1:直接下载源码包,最简单
这是最适合新手的方法,推荐优先用这个。
操作步骤
- 打开 Eigen 的官方源码仓库或发布包页面
- 下载压缩包
- 解压到一个固定目录,比如:
D:\libs\eigen - 在项目里把 Eigen 的头文件路径加进去
目录结构一般会像这样
D:\libs\eigen\
Eigen\
unsupported\
CMakeLists.txt
README.md
你真正需要的通常是这个路径:
D:\libs\eigen
或者更精确一点,包含 Eigen 目录的父目录。
方式 2:用包管理器安装,适合进阶用户
如果你平时经常开发 Windows C++ 项目,可以用包管理器统一管理依赖。
常见方式
- vcpkg
- Conan
- MSYS2
优点:
- 方便升级
- 依赖管理更清晰
- 适合多个项目共用
缺点:
- 新手第一次配置会比直接下载复杂一点
方式 3:通过 CMake 引入,适合项目化开发
如果你的项目使用 CMake,推荐直接在项目里指定 Eigen 路径,或者让 CMake 找到它。
这种方式适合:
- 用 Visual Studio 2022
- 用 CLion
- 用命令行编译
- 做跨平台项目
三、新手最推荐的安装方式:直接下载 + Visual Studio 配置
下面用最直观的方法讲。
第一步:下载 Eigen
去下载 Eigen 源码压缩包,解压到一个你自己记得住的位置,例如:
D:\libs\eigen-3.4.0
注意:
- 路径不要有中文和特殊符号
- 尽量不要放在桌面这种经常变动的位置
- 不要把 Eigen 解压得太深
第二步:确认头文件位置
你打开解压后的目录,应该能看到:
D:\libs\eigen-3.4.0\Eigen
D:\libs\eigen-3.4.0\unsupported
这里的关键点是:
代码里 include 的不是“安装程序”,而是头文件目录。
常见引用方式:
#include <Eigen/Dense>
这个写法能不能成功,取决于你项目里有没有把 D:\libs\eigen-3.4.0 加到包含目录里。
第三步:在 Visual Studio 里配置包含目录
如果你用的是 Visual Studio,按下面做:
操作步骤
- 打开你的 C++ 项目
- 右键项目名
- 选择 属性
- 找到:
C/C++ -> 常规 -> 附加包含目录 - 点击编辑,添加:
D:\libs\eigen-3.4.0 - 保存设置,确定退出
这样编译器就知道去这个路径下面找 Eigen 文件夹了。
第四步:写一个最小测试代码
新建一个 .cpp 文件,写入:
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Matrix3d m;
m << 1, 2, 3,
4, 5, 6,
7, 8, 9;
std::cout << "Matrix:\n" << m << std::endl;
return 0;
}
如果能正常编译并运行,说明 Eigen 在 Windows 上已经配置成功。
四、CMake 下安装和使用 Eigen 的方法
很多项目现在都不用手动配 VS 属性页了,而是用 CMake。这个方法更适合长期维护。
情况 1:Eigen 是你自己下载的源码包
假设 Eigen 放在:
D:/libs/eigen-3.4.0
你的 CMakeLists.txt 可以这样写:
cmake_minimum_required(VERSION 3.15)
project(TestEigen)
set(CMAKE_CXX_STANDARD 17)
include_directories(D:/libs/eigen-3.4.0)
add_executable(TestEigen main.cpp)
然后在 main.cpp 里:
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Vector3d v(1.0, 2.0, 3.0);
std::cout << v << std::endl;
return 0;
}
情况 2:用 find_package 查找 Eigen
如果你是通过包管理器安装,或者系统里已经有 Eigen 的 CMake 配置文件,可以尝试:
find_package(Eigen3 REQUIRED)
target_link_libraries(TestEigen PRIVATE Eigen3::Eigen)
不过要注意:
- 不是所有 Windows 环境默认都能直接
find_package(Eigen3)成功 - 如果你只是本地开发,直接
include_directories往往更省事
五、用 vcpkg 安装 Eigen(适合长期开发)
如果你想让 Windows 上的软件依赖管理更规范,可以用 vcpkg。
安装思路
- 先安装 vcpkg
- 用它安装 eigen3
- 在 CMake 或 VS 中集成
常见命令
vcpkg install eigen3
如果你是 CMake 项目,可以加上 vcpkg toolchain。
这种方式的好处是:
- 项目依赖统一
- 换电脑方便
- 管理多个第三方库时更稳定
但如果你只是临时写个小程序,没必要一上来就折腾包管理器。
六、Windows 上最常见的 Eigen 使用报错
下面这部分很关键,很多人就是卡在这里。
报错 1:fatal error: Eigen/Dense: No such file or directory
原因
编译器没找到 Eigen 的头文件路径。
解决办法
检查你加的路径是不是对的。
正确做法通常是加:
D:\libs\eigen-3.4.0
而不是只加:
D:\libs\eigen-3.4.0\Eigen
因为代码里写的是:
#include <Eigen/Dense>
编译器会从你配置的包含目录下继续找 Eigen/Dense。
报错 2:unresolved external symbol
原因
这个在 Eigen 里比较少见,因为它本身是头文件库。
如果出现,通常不是 Eigen 本体问题,而是:
- 你项目里有别的库没链接
- 编译设置混乱
- 代码模板实例化问题
- 你误以为 Eigen 是需要单独链接的库
解决办法
Eigen 一般不需要单独链接。
如果你只用了 Eigen,通常只要包含目录配置好,就能编译。
报错 3:编译很慢
原因
Eigen 依赖模板展开,复杂矩阵运算时编译时间会增加。
解决办法
- 开启预编译头
- 减少不必要的头文件包含
- 复杂模板代码尽量拆分
- 开启合理优化等级
报错 4:和其他库冲突
比如你同时用了:
- OpenCV
- PCL
- Ceres
- g2o
这些库本身也可能依赖 Eigen。
解决办法
- 尽量统一 Eigen 版本
- 不要工程里手动塞多个 Eigen 副本
- 优先用同一套包管理器维护依赖
七、Windows 下 Eigen 的标准用法示例
1. 向量运算
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Vector3d a(1, 2, 3);
Eigen::Vector3d b(4, 5, 6);
Eigen::Vector3d c = a + b;
std::cout << "c = " << c.transpose() << std::endl;
return 0;
}
2. 矩阵乘法
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Matrix2d A;
A << 1, 2,
3, 4;
Eigen::Matrix2d B;
B << 5, 6,
7, 8;
Eigen::Matrix2d C = A * B;
std::cout << "C:\n" << C << std::endl;
return 0;
}
3. 求逆
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Matrix2d A;
A << 4, 7,
2, 6;
std::cout << "Inverse:\n" << A.inverse() << std::endl;
return 0;
}
注意:
实际开发里不要见到矩阵就直接求逆,很多时候解方程更稳、更快。
八、如果你是小白,最稳的配置流程就是这套
推荐方案:最省事、最不容易出错
1)下载 Eigen 压缩包
2)解压到:
D:\libs\eigen-3.4.0
3)VS 项目里添加包含目录:
D:\libs\eigen-3.4.0
4)代码中写:
#include <Eigen/Dense>
5)编译测试
如果测试代码能跑通,就说明配置完成。
九、进阶用户更建议注意的几个点
1. 统一编译器版本
如果你在 Windows 上用 Eigen,最好统一:
- MSVC 版本
- C++ 标准版本
- 依赖库的编译方式
比如:
- VS 2019 / VS 2022
- C++17 或 C++20
2. 避免混用多个 Eigen 版本
有些人电脑里装了:
- OpenCV 自带的 Eigen
- vcpkg 安装的 Eigen
- 手动下载的 Eigen
这很容易导致头文件冲突。
建议:
- 一个项目只保留一个来源
- 不要随便乱加多个包含目录
3. 大项目优先用包管理器
如果你的项目会长期维护,建议:
- 用 vcpkg 管理
- 或者用 CMake 统一配置
这样后期换机器、换同事接手、换 CI 环境都更省心。
十、常见问题总结
Q1:Eigen 需要安装吗?
不需要传统意义上的安装。它是头文件库,主要是下载后配置路径。
Q2:Windows 上怎么判断 Eigen 配好了?
写一个包含 #include <Eigen/Dense> 的测试程序,能成功编译运行就说明成功。
Q3:为什么我加了路径还是报错?
大概率是包含目录加错了。通常应该加到 Eigen 根目录,也就是能直接看到 Eigen 文件夹的那一级。
Q4:Eigen 需要链接 lib 文件吗?
通常不需要。它本身大多是头文件实现。
Q5:能不能和 OpenCV 一起用?
可以,而且非常常见。很多视觉项目都这么搭配。
十一、实用建议:Windows 上用 Eigen 最稳的做法
如果你是新手,直接照这个顺序来最稳:
- 用 Visual Studio 2022
- 下载 Eigen 官方包
- 解压到固定目录
- 把包含目录加到项目属性里
- 写最小示例验证
- 再往项目里加其他库
如果你是做长期项目,建议:
- 用 CMake
- 用 vcpkg 或统一的第三方库目录
- 固定 Eigen 版本
- 不要多个项目各配各的,后期很乱
十二、结语:Eigen 在 Windows 上“安装”的核心,其实就是配置路径
很多人第一次搜“eigen 安装 windows”,会以为它像普通软件一样要双击安装。
实际上,Eigen 在 Windows 上最关键的动作就三步:
- 下载
- 配置头文件路径
- 编译测试
只要你把 #include <Eigen/Dense> 的搜索路径设置对了,Eigen 基本就能稳定用起来。对于 C++ 开发来说,这种头文件库的用法非常常见,后面你再接 OpenCV、Ceres、PCL、g2o,也会越来越顺。

还没有评论,来说两句吧...