VS2015中使用Eigen3提示“No such file or directory”问题求助
解决VS2015中无法找到Eigen/Dense的问题
我来帮你一步步排查这个问题——既然PCL项目能正常使用Eigen,说明库本身没问题,大概率是新项目的配置出了小疏漏:
1. 核对附加包含目录的路径是否正确
先确认你的eigen3文件夹结构:打开它应该能直接看到Eigen子文件夹(里面包含Dense等头文件)。
- 如果你的
eigen3放在D:\ThirdParty\eigen3,那附加包含目录必须添加D:\ThirdParty\eigen3,而不是它的上级目录(比如D:\ThirdParty)。因为编译器会在你指定的包含目录下直接查找Eigen/Dense这个路径。 - 要是你误加了上级目录,代码里就得写成
#include <eigen3/Eigen/Dense>才能找到,但你现在用的是#include <Eigen/Dense>,自然会报错。
2. 确认配置对应当前项目的平台/模式
VS的配置是分平台(x86/x64)和模式(Debug/Release)的,别犯了低级错误:
- 右键你的新项目 → 属性 → 确认顶部的「配置」和「平台」是你当前正在编译的模式(比如你编译的是Debug x64,就别在Release x86的配置里加路径)。
- 很多人会不小心在错误的平台下配置,导致编译时根本没用到正确的路径。
3. 区分全局包含目录和项目级包含目录
PCL项目能正常用,可能是PCL的配置自动帮你加了Eigen路径,或者你之前在全局设置里加了,但新项目没继承:
- 全局设置:工具 → 选项 → 项目和解决方案 → VC++目录 → 包含目录,这里的路径所有新项目都会继承,但要确认路径没写错。
- 项目级设置:右键项目 → 属性 → C/C++ → 常规 → 附加包含目录,这里的优先级比全局高,建议直接在新项目里单独配置一次,避免全局设置的干扰。
4. 检查拼写和路径大小写
虽然Windows是大小写不敏感,但VS编译器偶尔会因为路径大小写不匹配报错(比如你的子文件夹是小写eigen但代码里写的是Eigen)。不过你说PCL里能用,这个概率很低,但还是确认下eigen3里的子文件夹确实是大写的Eigen。
最后提个小细节
你的代码里写的是void mian(),应该是void main()或者int main(),这个虽然不是头文件找不到的原因,但等头文件问题解决后,会因为这个导致运行错误,记得改过来。
内容的提问来源于stack exchange,提问作者lelle
相关产品推荐
相关产品推荐

