eigen 安装 windows

老刘

eigen 安装 Windows:从下载到编译,一篇讲清楚

目标关键词:eigen 安装 windows

如果你在做 C++ 开发、机器视觉、算法优化、图像处理,或者只是想把 Eigen 这个轻量级线性代数库装到 Windows 上用起来,这篇文章基本就够了。
Eigen 本身不是那种“点下一步就能安装”的传统软件,它更像是一个头文件库,重点不是“安装程序”,而是下载、配置、引用、编译测试。很多新手第一次在 Windows 上用 Eigen,会卡在:到底要不要安装、怎么配置、VS 里怎么加路径、CMake 怎么写、编译报错怎么处理。下面我按最实用的方式一步一步讲清楚。


一、Eigen 是什么,为什么很多人会在 Windows 上搜“安装”

Eigen 是一个开源的 C++ 线性代数库,常用来做:

  • 矩阵运算
  • 向量计算
  • 几何变换
  • 最小二乘、特征值分解
  • 机器人、视觉、控制、科学计算

它最大的特点是:

  1. 纯头文件库

    • 不需要像某些软件那样单独安装运行库
    • 你下载下来后,核心就是一堆 .h 文件
  2. 跨平台

    • Windows、Linux、macOS 都能用
  3. 性能强

    • 经过大量模板和表达式优化,适合高性能计算

所以大家说的“eigen 安装 windows”,准确点说其实是:

  • 在 Windows 上获取 Eigen
  • 配置到 Visual Studio / CMake 工程里
  • 让代码能正常 #include 并编译通过

二、Windows 上安装 Eigen 的几种方式

方式 1:直接下载源码包,最简单

这是最适合新手的方法,推荐优先用这个。

操作步骤

  1. 打开 Eigen 的官方源码仓库或发布包页面
  2. 下载压缩
  3. 解压到一个固定目录,比如:
    D:\libs\eigen
  4. 在项目里把 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,按下面做:

操作步骤

  1. 打开你的 C++ 项目
  2. 右键项目名
  3. 选择 属性
  4. 找到:
    C/C++ -> 常规 -> 附加包含目录
  5. 点击编辑,添加:
    D:\libs\eigen-3.4.0
  6. 保存设置,确定退出

这样编译器就知道去这个路径下面找 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。

安装思路

  1. 先安装 vcpkg
  2. 用它安装 eigen3
  3. 在 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 最稳的做法

如果你是新手,直接照这个顺序来最稳:

  1. 用 Visual Studio 2022
  2. 下载 Eigen 官方包
  3. 解压到固定目录
  4. 把包含目录加到项目属性里
  5. 写最小示例验证
  6. 再往项目里加其他库

如果你是做长期项目,建议:

  1. 用 CMake
  2. 用 vcpkg 或统一的第三方库目录
  3. 固定 Eigen 版本
  4. 不要多个项目各配各的,后期很乱

十二、结语:Eigen 在 Windows 上“安装”的核心,其实就是配置路径

很多人第一次搜“eigen 安装 windows”,会以为它像普通软件一样要双击安装。
实际上,Eigen 在 Windows 上最关键的动作就三步:

  • 下载
  • 配置头文件路径
  • 编译测试

只要你把 #include <Eigen/Dense> 的搜索路径设置对了,Eigen 基本就能稳定用起来。对于 C++ 开发来说,这种头文件库的用法非常常见,后面你再接 OpenCV、Ceres、PCL、g2o,也会越来越顺。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,2人围观)

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

目录[+]