不知道搞了什么,C++项目的实时代码编译罢工了,搞了半天都修不好,只能又重建了
UE5 版本为 v5.1.1
删除以下文件夹
/Binaries
/Intermediate
/Saved
Binaries 文件夹是编译后的模块
Intermediate 文件夹里是中间层的C++代码,完全由ue5生成
Saved 是一些编辑器设定和日志
注意,以下的xxx为任意字符串
然后用 ue5 打开 xxx.uproject
打开后,提示我是否重建 xxx 模块,点确定,编译了几分钟。
提示编译失败,打开 /Saved/Logs/xxx.log ,里面是编译日志,观察到一句 IsRenderingThreadHealthy 代码无法找到链接符号。
以下是部分日志
正在创建库 Y:\DrawFront2\Intermediate\Build\Win64\UnrealEditor\Development\DrawFront2\UnrealEditor-DrawFront2.lib 和对象 Y:\DrawFront2\Intermediate\Build\Win64\UnrealEditor\Development\DrawFront2\UnrealEditor-DrawFront2.exp
[15/20] Link UnrealEditor-DrawFront2.dll
正在创建库 Y:\DrawFront2\Intermediate\Build\Win64\UnrealEditor\Development\DrawFront2\UnrealEditor-DrawFront2.suppressed.lib 和对象 Y:\DrawFront2\Intermediate\Build\Win64\UnrealEditor\Development\DrawFront2\UnrealEditor-DrawFront2.suppressed.exp
MyMsgPipeLib.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) bool __cdecl IsRenderingThreadHealthy(void)" (__imp_?IsRenderingThreadHealthy@@YA_NXZ),函数 "public: static class UTexture2D * __cdecl UMyMsgPipeLib::GetCurImage(class FString,int,int,bool &,int &,int &)" (?GetCurImage@UMyMsgPipeLib@@SAPEAVUTexture2D@@VFString@@HHAEA_NAEAH2@Z) 中引用了该符号
Y:\DrawFront2\Binaries\Win64\UnrealEditor-DrawFront2.dll : fatal error LNK1120: 1 个无法解析的外部命令
[16/20] Compile Module.RuntimeAudioImporter.cpp
[17/20] Link UnrealEditor-RuntimeAudioImporter.lib
屏蔽了所有 IsRenderingThreadHealthy 的代码。再次打开ue5进行编译。
这次编译成功了,但是又报了一个错误
游戏模块“xxx”无法被加载,可能存在的操作系统错误,模块可能未正确设置,或版本中包含的插件尚未开启。
搜索网络后,发现和想起来 我的C++项目链接了我其他的C++项目的dll作为依赖库,这些依赖库dll放在 /Binaries/Win64 里面
而它们在第一步被删掉了。
我把 我其他C++项目的 dll 再次复制到 /Binaries/Win64 里面
再次用 ue5 打开项目,终于行了,能打开了。
立刻用按钮 ue5菜单栏 -> 工具 -> 打开 Visual Studio ,打开C++ IDE
发现 xxx 项目没有找到。。。无法构建。。。此时VS项目不完整。
关闭 Visual Studio,然后点击 ue5菜单栏 -> 工具 -> 刷新 Visual Studio 项目,重建 VS 项目
再次用按钮 ue5菜单栏 -> 工具 -> 打开 Visual Studio ,打开 Visual Studio,这次VS项目终于完整了。
按下 Ctrl+Alt+F11 ,启动 实时代码编译,没有报错。
至此,UE C++ 项目完全重新构建完成。