Visual Studio 2022中spdlog头文件引用失败问题求助
Visual Studio 2022中spdlog头文件引用失败问题求助
兄弟我太懂你跟着教程卡在这里的憋屈了!我之前跟着Cherno做Hazel引擎的时候也踩过这个spdlog路径的坑,咱们一步步来把它搞定。
首先明确问题根源:你的编译器根本不知道spdlog的头文件在哪——虽然你把spdlog放在了项目的vendor目录里,但Visual Studio的项目没有把这个路径加入到编译时的搜索列表里,所以才会报Cannot open include file: 'spdlog': No such file or directory这个错误。
解决步骤(针对Visual Studio 2022)
- 右键你的Hazel项目(注意是项目不是解决方案),选择「属性」
- 在属性窗口里,展开「C/C++」→ 选择「常规」选项
- 找到「附加包含目录」,点击右边的编辑按钮(小箭头图标)
- 把spdlog的include目录路径加进去:
- 可以直接填绝对路径:
C:\Users\peyton\source\repos\Hazel2\Hazel\Hazel\src\Hazel\vendor\spdlog-1.x\include - 更推荐用相对路径,避免以后移动项目出问题:
$(ProjectDir)src\Hazel\vendor\spdlog-1.x\include($(ProjectDir)会自动替换成你的Hazel项目根目录路径)
- 可以直接填绝对路径:
- 点击确定保存设置,然后重新生成你的Hazel项目
额外排查点
- 先确认你的spdlog路径没写错:打开那个include目录,里面必须有一个名为
spdlog的子文件夹,而且里面确实有spdlog.h这个文件 - 如果你是多项目解决方案,一定要确保是给Hazel引擎项目配置的附加包含目录,而不是客户端项目或者解决方案本身
- 如果还是不行,试试清理项目(菜单栏「生成」→「清理解决方案」),然后重新生成
附上你提供的Log.h代码方便参考:
#pragma once #include <memory> #include "Core.h" #include "spdlog/spdlog.h" namespace Hazel { class HAZEL_API Log { public: static void Init(); inline static std::shared_ptr<spdlog::logger>& GetCoreLogger() { return s_CoreLogger; } inline static std::shared_ptr<spdlog::logger>& GetClientLogger() { return s_ClientLogger; } private: static std::shared_ptr<spdlog::logger> s_CoreLogger; static std::shared_ptr<spdlog::logger> s_ClientLogger; }; }
以及你遇到的错误信息:
C:\Users\peyton\source\repos\Hazel2\Hazel\Hazel\src\Hazel\Log.h(5,10): fatal error C1083: Cannot open include file: 'spdlog': No such file or directory
备注:内容来源于stack exchange,提问作者Irish_Dev
相关产品推荐
相关产品推荐

