Xcode转MSVS2017代码:stdafx.h及自定义头文件找不到问题求助
解决MSVS2017中stdafx.h及自定义头文件找不到的问题
从Xcode迁移到MSVS2017遇到这类头文件问题很常见,我帮你梳理几个关键的排查和解决步骤:
1. 检查子文件的预编译头设置
MSVS的预编译头是按单个文件配置的,主程序文件应该已经设置了创建预编译头,但子文件可能没启用“使用预编译头”:
- 右键出现错误的子函数文件 → 属性
- 切换到配置属性 → C/C++ → 预编译头
- 把“预编译头”选项改成
使用(/Yu),确保“预编译头文件”填写的是stdafx.h(和主文件一致)
2. 配置头文件包含目录
Xcode和MSVS的头文件搜索逻辑不同,你需要把自定义头文件和stdafx.h所在的目录添加到编译器的搜索路径里:
- 右键项目 → 属性
- 进入配置属性 → C/C++ → 常规
- 在“附加包含目录”中,添加以下路径:
stdafx.h所在的文件夹(如果子文件不在同一目录)- 所有自定义头文件所在的文件夹
- 推荐用相对路径,比如
$(ProjectDir)(项目根目录)或者$(SolutionDir)(解决方案根目录),避免绝对路径带来的移植问题
3. 修正#include语句的路径(可选)
如果子文件在项目的子文件夹中,直接写#include "stdafx.h"可能找不到文件,你可以:
- 改成相对路径,比如子文件在
src/sub目录,stdafx.h在根目录,就写#include "../stdafx.h" - 或者通过上面的“附加包含目录”添加stdafx.h的目录,这样保持
#include "stdafx.h"即可
4. 清理重建项目
MSVS有时候会因为缓存导致奇怪的编译错误,做完上面的设置后:
- 点击菜单栏的生成 → 清理解决方案
- 然后选择生成 → 重建解决方案,让编译器重新生成所有文件和预编译头
按照这些步骤操作后,应该就能解决头文件找不到的问题了。
内容的提问来源于stack exchange,提问作者Donald RSA
相关产品推荐
相关产品推荐

