UE解决有模块需要重新编译问题

问题简述

与本文所提到的问题相关联的报错文本:

The following modules are missing or built with a different engine version.

Project could not be compiled. Try rebuilding from source manually.

这个问题也算是 UE 论坛上的常青问题,每个人出现该问题的方式都各不相同。特定地,作者明确是以下情况导致的该报错:原工程文件在 Plugins 文件夹内手动加入了插件,然后试图将项目在其他设备上运行时将会提示手动加入的插件模块缺失或者构建的引擎版本不同。这意味着如果你是拷贝或者拉取了别人仓库内的工程文件后,首次打开失败并出现这个错误,本文可以帮你解决。

解决方案

如果你确定项目不需要这些插件,你可以直接把它们删了。

如果这是一个 C++ 工程,项目结构中应该已经包含了一个 Source 文件夹用于保存源码,并且有一个 . sln 文件(解决方案)。打开解决方案,直接重新 build(生成)项目内容即可。如果有报错,需要自己根据错误提示解决。如果没有解决方案,右键. uproject 文件可以看到 Generate Visual Studio project files 选项,选择后会生成解决方案。

如果这是一个纯蓝图工程,由于项目结构里没有 Source 文件夹,无法直接生成解决方案,需要我们把蓝图工程转换为 C++工程。有两种方式可以选择:

1. 不使用引擎编辑器

新建一个 C++工程,项目名称和当前要打开的项目名称保持一致。这个新建工程将会自动生成一个 Source 文件夹,有一个项目所需要的最基本的文件。直接拷贝这个 Source 文件夹到问题工程的文件夹中,之后再尝试 Generate Visual Studio project files 便可以成功生成解决方案。

当然,从其他没有多余 C++ 类的项目中拷贝并且整体修改这些入口文件中的类名来匹配当前工程也是可以的。或者你确信这些类不会导致其他的一些编译问题,也可以一起加进去,这个 Source 文件夹本身并不重要,之后也可以删除。

2. 使用引擎编辑器

先把报错的模块从 Plugins 文件夹内移出,在没有其他问题的情况下引擎应该能正常启动。在项目内新建一个 C++ 类,项目将会自动转化为 C++工程。将报错的模块移回到 Plugins 中,后面的操作同前文,生成解决方案并重新生成项目。

附录

不太具有价值的关于解决编译错误的贴士:

  1. 首先检查你的路径里是否有中文。如果有,改成英文。
  2. 可以尝试把 Intermediate 文件夹和 Binaries 文件夹直接删掉,再编译生成。