常见问题#
Windows 构建#
- 如何强制 Unreal 使用 Visual Studio 2019?
- 我收到错误:“where”不是内部或外部命令
- 我收到错误
<MyProject> 无法编译。请尝试手动从源代码重新构建
- 运行 build.cmd 时,我收到
error C100:编译器发生内部错误
- 我收到错误“'corecrt.h':没有这样的文件或目录”或“未找到 Windows SDK 版本 8.1”
- 如何在 AirSim 中使用 PX4 固件?
- 我在 Visual Studio 中进行了更改,但没有效果
- Unreal 仍然使用 VS2015 或我收到一些链接错误
Linux 构建#
- 我收到错误
<MyProject> 无法编译。请尝试手动从源代码重新构建
。 - Unreal 崩溃了!我怎么知道出了什么问题?
- 如何在 Linux 上使用 IDE?
- 我可以在 Windows 机器上为 Linux 交叉编译吗?
- AirSim 使用什么编译器和 stdlib?
- AirSim 构建使用哪个版本的 CMake?
- 我可以在 BashOnWindows 中编译 AirSim 吗?
- 在哪里可以找到更多关于在 Linux 上运行 Unreal 的信息?
其他#
Windows 构建#
如何强制 Unreal 使用 Visual Studio 2019?#
如果默认的
update_from_git.bat
文件生成 VS 2017 项目,那么您可能需要手动运行C:\Program Files\Epic Games\UE_4.25\Engine\Binaries\DotNET\UnrealBuildTool.exe
工具,使用命令行选项-projectfiles -project=<your.uproject> -game -rocket -progress -2019
。如果您正在从 4.18 升级到 4.25,您可能还需要在
*.Target.cs
和*Editor.Target.cs
构建文件中添加BuildSettingsVersion.V2
,如下所示public AirSimNHTestTarget(TargetInfo Target) : base(Target) { Type = TargetType.Game; DefaultBuildSettings = BuildSettingsVersion.V2; ExtraModuleNames.AddRange(new string[] { "AirSimNHTest" }); }
您可能还需要编辑此文件
"%APPDATA%\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
并添加此编译器版本设置
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration"> <WindowsPlatform> <Compiler>VisualStudio2019</Compiler> </WindowsPlatform> </Configuration>
我收到错误:“where”不是内部或外部命令#
您必须将
C:\WINDOWS\SYSTEM32
添加到您的 PATH 环境变量中。
我收到错误 <MyProject> 无法编译。请尝试手动从源代码重新构建
#
当存在编译错误时会发生这种情况。日志存储在
<My-Project>\Saved\Logs
中,可用于找出问题。一个常见问题可能是 Visual Studio 版本冲突,AirSim 使用 VS 2019,而 UE 使用 VS 2017,这可以通过在日志文件中搜索
2017
来发现。在这种情况下,请参阅上面的答案。如果您修改了 AirSim 插件文件,则可以右键单击
.uproject
文件,选择生成 Visual Studio 解决方案文件
,然后在 VS 中打开.sln
文件以修复错误并重新构建。
运行 build.cmd 时,我收到 error C100:编译器发生内部错误
#
我们注意到 VS 版本
15.9.0
出现了这种情况,并在 AirSim 代码中签入了一个变通方法。如果您有此 VS 版本,请务必拉取最新的 AirSim 代码。
我收到错误“'corecrt.h':没有这样的文件或目录”或“未找到 Windows SDK 版本 8.1”#
您很可能没有随 Visual Studio 安装 Windows SDK。
如何在 AirSim 中使用 PX4 固件?#
默认情况下,AirSim 使用其内置固件,称为 simple_flight。如果您只想使用它,则无需额外设置。如果您想切换到使用 PX4,请参阅 此指南。
我在 Visual Studio 中进行了更改,但没有效果#
有时,如果您只更改头文件,Unreal + VS 构建系统不会重新编译。为了确保重新编译,请将某些基于 Unreal 的 cpp 文件(例如 AirSimGameMode.cpp)“弄脏”。
Unreal 仍然使用 VS2015 或我收到一些链接错误#
运行多个版本的 VS 可能会在编译 UE 项目时导致问题。可能出现的一个问题是 UE 会尝试使用旧版本的 VS 进行编译,这可能有效,也可能无效。Unreal 中有两个设置,一个用于引擎,一个用于项目,用于调整要使用的 VS 版本。
- 编辑 -> 编辑器首选项 -> 通用 -> 源代码 -> 源代码编辑器
- 编辑 -> 项目设置 -> 平台 -> Windows -> 工具链 -> 编译器版本
在某些情况下,这些设置仍然无法达到预期结果,并且可能会产生如下错误:LINK:致命错误 LNK1181:无法打开输入文件“ws2_32.lib”
为了解决此类问题,可以应用以下过程
- 使用 VisualStudioUninstaller 卸载所有旧版本的 VS
- 修复/安装 VS 2019
- 重启机器并安装 Epic 启动器和所需版本的引擎
Linux 构建#
我收到错误 <MyProject> 无法编译。请尝试手动从源代码重新构建
。#
这可能是由于编译错误或您的 gch 文件已过时造成的。查看您的控制台窗口。您是否看到以下内容?
致命错误:文件 '/usr/include/linux/version.h''/usr/include/linux/version.h' 自预编译头文件以来已被修改
如果是这种情况,请查找消息后出现的 *.gch 文件,删除它们,然后重试。这是 Unreal Engine 论坛上的 相关线程。
如果您在控制台中看到其他编译错误,请打开这些源文件,看看是否是您所做的更改造成的。如果不是,请在 GitHub 上报告为问题。
Unreal 崩溃了!我怎么知道出了什么问题?#
转到
MyUnrealProject/Saved/Crashes
文件夹,并在其子目录中搜索文件MyProject.log
。在此文件末尾,您将看到堆栈跟踪和消息。您还可以查看Diagnostics.txt
文件。
如何在 Linux 上使用 IDE?#
您可以使用 Qt Creator 或 CodeLite。Qt Creator 的说明可在此处 找到。
我可以在 Windows 机器上为 Linux 交叉编译吗?#
是的,可以,但我们尚未测试。您可以在 此处 找到说明。
AirSim 使用什么编译器和 stdlib?#
我们使用与 Unreal Engine 相同的编译器,Clang 8,以及 stdlib,libc++。AirSim 的
setup.sh
将自动下载它们。
AirSim 构建使用哪个版本的 CMake?#
3.10.0 或更高版本。这在 Ubuntu 16.04 中不是默认值,因此 setup.sh 会为您安装。您可以使用
cmake --version
检查您的 CMake 版本。如果您有旧版本,请按照 这些说明 操作或参阅 CMake 网站。
我可以在 BashOnWindows 中编译 AirSim 吗?#
是的,但是,您无法从 BashOnWindows 运行 Unreal。因此,这对于检查 Linux 编译很有用,但对于端到端运行则不然。请参阅 BashOnWindows 安装指南。请确保拥有最新版本(Windows 10 Creators Edition),因为以前的版本存在各种问题。另外,不要从
Visual Studio Command Prompt
调用bash
,否则 CMake 可能会找到 VC++ 并尝试使用它!
在哪里可以找到更多关于在 Linux 上运行 Unreal 的信息?#
从这里开始:Unreal on Linux Building Unreal on Linux Unreal Linux Support Unreal Cross Compilation
其他#
打包包含 AirSim 插件的二进制文件#
为了将自定义环境与 AirSim 插件一起打包,需要进行一些项目设置,以确保所有 AirSim 所需的资产都包含在包中。在
编辑 -> 项目设置... -> 项目 -> 打包
下,请确保以下设置已正确配置
要包含在打包构建中的地图列表
:确保存在一个条目用于/AirSim/AirSimAssets
要烹饪的额外资产目录
:确保存在一个条目用于/AirSim/HUDAssets