如何在Visual Studio 2013中配置Eigen?引入及示例运行报错求助
解决Eigen头文件库的使用问题
别着急,Eigen其实是**仅头文件(header-only)**的库,不需要编译成传统的静态/动态库,只要让你的编译器能找到它的头文件目录就行,我给你一步步讲清楚怎么弄:
核心前提:找到正确的头文件根目录
你下载的Eigen主文件夹里,一定有一个叫Eigen的子文件夹(比如你下载的是eigen-3.4.0,那路径就是eigen-3.4.0/Eigen/),这个子文件夹就是所有Eigen头文件的根目录。我们要做的,就是让编译器知道这个子文件夹所在的上层目录位置。
不同场景的配置方法
1. 使用Visual Studio的情况
- 打开你的项目,右键项目名称 → 选择「属性」
- 在弹出的窗口里,依次展开「配置属性」→「C/C++」→「常规」
- 找到「附加包含目录」,点击编辑,把
Eigen子文件夹所在的上层目录加进去(比如你的Eigen子文件夹在D:/tools/eigen-3.4.0/,就把这个路径添加进去) - 配置完成后,在代码里直接这样引入头文件即可:
#include <Eigen/Dense>
2. 使用CLion/CMake项目的情况
- 打开项目的
CMakeLists.txt,添加一行代码指定包含目录:
比如你的Eigen在include_directories(你的Eigen上层目录路径)~/downloads/eigen-3.4.0/,就写include_directories(~/downloads/eigen-3.4.0/) - 同样在代码里用
#include <Eigen/Dense>引入,然后正常编译运行就行。
3. 命令行编译(比如g++/clang++)
- 编译代码时,用
-I参数指定Eigen的上层目录,比如你的Eigen在/home/user/eigen-3.4.0/,编译命令就是:g++ your_code.cpp -o your_program -I /home/user/eigen-3.4.0/
解决你遇到的报错问题
你之前尝试「引入整个文件夹」或者「直接引入.h文件」报错,本质是编译器找不到正确的头文件路径:
- 直接引入整个文件夹不是C++的正确语法,编译器自然会报错;
- 单独引入某个.h文件时,因为编译器不知道
Eigen文件夹的位置,所以找不到对应的头文件。
按照上面的方法配置好包含目录后,直接用<Eigen/模块名>的方式引入(比如<Eigen/Dense>对应稠密矩阵模块,<Eigen/Sparse>对应稀疏矩阵模块),就能正常使用了。
测试示例代码
可以用下面的简单代码测试是否配置成功:
#include <iostream> #include <Eigen/Dense> int main() { Eigen::MatrixXd m(2,2); m(0,0) = 3; m(1,0) = 2.5; m(0,1) = -1; m(1,1) = m(1,0) + m(0,1); std::cout << "测试矩阵:\n" << m << std::endl; return 0; }
内容的提问来源于stack exchange,提问作者omri bz
相关产品推荐
相关产品推荐

