Visual Studio 2022中引用resource.h的最佳实践咨询
直接用绝对路径#include "C:/full_path_to_resource_h/resource.h"虽然能临时解决问题,但这绝对不是推荐的做法——一旦你移动项目文件夹,或者换另一台机器编译,这个路径直接就失效了,完全破坏了项目的可移植性。
你这情况大概率是没配置好VS的项目包含目录,或者resource.h的引用方式不对,按下面的步骤来就能彻底解决:
确认
resource.h的位置
VS创建Windows应用项目时,resource.h一般和你的源文件(比如WinMain.cpp)在同一目录,或者在项目的Header Files文件夹里。检查项目的包含目录设置
右键项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录,确保resource.h所在的目录已经被添加。如果它就在项目根目录,默认应该已经包含;要是放在子文件夹(比如resources),就把这个子文件夹的相对路径加进去,比如用VS内置宏$(ProjectDir)resources,这个宏会自动指向项目根目录,比写死路径靠谱多了。改用相对路径引用
resource.h
配置好包含目录后,直接写#include "resource.h"就行。如果resource.h和源文件不在同一目录,就用相对路径(比如#include "../resource.h"或者#include "resources/resource.h"),灵活又通用。检查
.rc资源脚本的关联
别忘了看你的.rc资源文件里有没有#include "resource.h"——VS默认会自动加,但如果被删掉了,资源ID也没法和代码关联,必须加回去。
最后提个小技巧:如果改完设置还是有问题,试试清理解决方案再重新生成,VS的缓存有时候会搞出奇怪的幺蛾子。
内容的提问来源于stack exchange,提问作者Lovro

