You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加自定义C++模块为Unreal依赖后编译报错:找不到generated.h文件

解决Unreal加自定义C++模块后主模块generated.h找不到的编译坑

排查方向及解法

1. 先查自定义模块的Build.cs有没有写错

打开你自定义模块的Build.cs,盯紧这几点:

  • 模块类型设置对不对?比如运行时模块就写ModuleType = ModuleType.Game,编辑器模块别乱加到运行时主模块的依赖里
  • 有没有循环依赖?比如主模块依赖自定义模块,结果自定义模块又把主模块加到自己的依赖里了,这种循环会直接搞崩代码生成顺序

2. 换个依赖声明位置试试

别把自定义模块放在PrivateDependencyModuleNames,移到PublicDependencyModuleNames里,有时候私有依赖的加载顺序会干扰主模块的代码生成。改完之后重新生成项目文件,把Intermediate文件夹删干净再编译。

3. 自定义模块的代码有没有语法/宏错误

Unreal的代码生成工具(UnrealHeaderTool)特别敏感,自定义模块里的小错误会连累主模块:

  • 所有继承UObject的类,必须加GENERATED_BODY()宏,少一个都不行
  • 检查有没有未闭合的宏、语法错误,比如括号没配对、分号漏写
  • 可以先把自定义模块的代码全注释掉,只留空的模块结构,编译主模块看看正常不,再逐步恢复代码排查问题

4. 彻底清掉UnrealHeaderTool的缓存

常规删Build、Intermediate这些还不够,得额外清理:

  • 删掉项目根目录的.vs文件夹(用VS的话)
  • 去Engine/Intermediate/Build里删掉对应平台的缓存(别瞎删整个Engine文件夹,只删和你项目相关的)
  • 重新跑GenerateProjectFiles.bat,等生成完再开IDE编译

5. 模块名或路径有没有冲突

检查自定义模块的名字是不是和引擎内置模块、第三方模块重名了,比如叫"Core"这种绝对不行

  • 打开.uproject文件,确认自定义模块的Name和Path配置正确,路径要指向包含Build.cs的那个文件夹
  • 主模块Build.cs里写的模块名,要和.uproject里的完全一致,大小写也别马虎(Windows下无所谓,但跨平台编译会翻车)

报错参考:Enums.h(7): [C1083] Cannot open include file: 'Enums.generated.h': No such file or directory

这种报错本质是UnrealHeaderTool没生成主模块的generated文件,加自定义模块后出问题,基本就是模块依赖关系不对,或者自定义模块的代码把代码生成工具搞挂了。

内容的提问来源于stack exchange,提问作者staskjs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:55:09