Visual Studio 2022中DLL项目预编译头配置报错求助
预编译头报错解决 & 目录结构答疑
一、解决"command-line option was not found in the source file"报错
这个报错本质是VS找不到指定的预编译头文件,或者创建预编译头的cpp文件不符合要求,按以下步骤处理:
1. 配置项目头文件查找路径
你的pch.h在include目录,pch.cpp在src目录,VS默认只会检索当前文件目录和系统目录,所以需要手动添加包含路径:
- 右键项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录,添加
$(ProjectDir)include(这个宏指向项目根目录下的include文件夹,比相对路径更稳定,不会因文件移动出问题)
2. 修正pch.cpp的设置与代码
设置pch.cpp生成预编译头时有两个硬性要求:
- 必须在pch.cpp的第一行就包含pch.h,前面不能有任何代码、空行或其他头文件,代码只需保留这一行:
#include "pch.h"
- 右键
pch.cpp→ 属性 → 预编译头:- 预编译头选择「创建(/Yc)」
- 预编译头文件直接填写
pch.h即可(已配置附加包含目录,VS能正常找到)
3. 调整其他文件的预编译头设置
globalPch.cpp设置为「使用(/Yu)」,同样在第一行包含pch.h,预编译头文件填写pch.h- 剩下的
dllmain.cpp、A.cpp、B.cpp等业务文件,全部设置为「使用(/Yu)」,并且每个文件的第一行都要包含pch.h,这样才能复用预编译头提升编译速度
二、关于预编译头目录结构的问题
开源项目里把pch.h和pch.cpp放在同一目录是非常常规的做法,好处是不用折腾包含路径,不容易出错,新手维护起来更简单。当然你现在这种include/src分离的结构也能正常使用,只要把包含路径配置正确就行,但同一目录的方式更省心,推荐新手优先采用。
内容的提问来源于stack exchange,提问作者SeungHo Jang
相关产品推荐
相关产品推荐

