每次打开电脑准备开始AirSim项目,总有种打开潘多拉魔盒的预感——不知道今天又会遇到什么稀奇古怪的编译错误。如果你也曾在VS2017和VS2019之间反复横跳,在UE4.22和4.24版本中迷失方向,那么这篇文章就是为你准备的生存指南。
在开始编译之前,我们需要确保所有工具链的版本完全匹配。就像乐高积木,看似兼容的零件如果型号不对,最终成品总会缺那么一块。
注意:即使安装了更高版本的VS2022或UE5,也必须使用上述指定版本组合,这是经过无数次验证的黄金搭配。
正确的环境变量设置可以避免80%的版本冲突问题。打开系统属性→高级→环境变量,确保以下路径优先级正确:
| 变量名 | 推荐值 |
|---|---|
| Path | C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64 优先 |
| UE_ROOT | 指向UE4.24安装目录(如F:\Epic Games\UE_4.24) |
powershell复制# 快速检查VS2019工具链是否生效
cl.exe /?
# 应显示Microsoft (R) C/C++ Optimizing Compiler Version 19.29.301XX
直接从GitHub克隆AirSim仓库是最简单的方式,但国内开发者常遇到下载速度慢的问题。以下是我总结的几种解决方案:
修改build.cmd中的资源链接是最直接的方法。例如将:
cmd复制set RPCLIB_URL=https://github.com/rpclib/rpclib/archive/v2.2.1.zip
替换为国内镜像站:
cmd复制set RPCLIB_URL=https://mirror.example.com/rpclib-v2.2.1.zip
如果镜像站不可用,可以:
这是最关键的步骤,也是大多数开发者踩坑的地方。当系统安装了多个VS和UE4版本时,必须显式指定使用哪些工具。
找到update_from_git.bat,将其中的UnrealBuildTool调用改为:
cmd复制"F:\Epic Games\UE_4.24\Engine\Binaries\DotNET\UnrealBuildTool.exe" -projectfiles ^
-project="E:\AirSim\Unreal\Environments\Blocks\Blocks.uproject" -game -rocket -progress ^
-log="E:\AirSim\Unreal\Environments\Blocks\Saved\Logs\UBT.log" -2019
关键修改点:
-2019参数强制使用VS2019^代替\作为换行符(Windows批处理语法)编译前运行以下命令检查环境:
powershell复制# 检查VS工具集
vswhere.exe -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
# 检查Windows SDK版本
Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots" | Select-Object Name
即使按照上述步骤操作,仍可能遇到一些棘手问题。以下是几个典型错误及其解决方法:
code复制error LNK1181: cannot open input file 'Msvcurt.lib'
解决方法:
如果UE4编辑器在加载项目时崩溃,尝试:
Saved、Intermediate和Binaries目录.uproject文件→"Generate Visual Studio project files"对于rpclib等第三方库的编译问题,可以尝试:
cmd复制# 在AirSim目录下手动编译rpclib
cd external\rpclib
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64
cmake --build . --config Release
在按下编译按钮前,最后确认以下事项:
记住,环境配置就像调音——微小的偏差都会导致整个系统走调。花时间确保每个环节准确无误,最终会为你节省数小时的调试时间。