5.2 link error when building UE project

Started with a 5.1 project, installed cesium, everything ran/built fine, was able to generate a Windows package.

Yesterday, updated to UE 5.2.
Looks like Cesium got updated as well. Also, I have already updated cesium. Still getting the same link errors.
Getting these link errors when I try to do a package in UE, does not matter what level, development, shipping, does not matter.

In Visual Studio, I can only compile with Development Editor. Other build types fail with linker errors as well.


While it says that cesium was updated to cesium 5.2 (and I did update per what this pic indicates), is it possible that my project is using the wrong version? And of so, how do I find out if it is and what is the best way to correct it? Asking about possibly using the wrong version because I noticed that someone else had a linker issue, but ended up being that they had the wrong version.

UATHelper: Packaging (Windows):    Creating library C:\DEVELOPMENT\TheProject\Binaries\Win64\HFDT_TheProject.lib and object C:\DEVELOPMENT\TheProject\Binaries\Win64\TheProject.exp
UATHelper: Packaging (Windows): Module.CesiumRuntime.5_of_6.cpp.obj : error LNK2019: unresolved external symbol __std_find_trivial_8 referenced in function "class CesiumAsync::CesiumImpl::QueuedScheduler * * __cdecl __std_find_trivial<class CesiumAsync::CesiumImpl::QueuedScheduler *,class CesiumAsync::CesiumImpl::QueuedScheduler *>(class CesiumAsync::CesiumImpl::QueuedScheduler * *,class CesiumAsync::CesiumImpl::QueuedScheduler * *,class CesiumAsync::CesiumImpl::QueuedScheduler * const)" (??$__std_find_trivial@PEAVQueuedScheduler@CesiumImpl@CesiumAsync@@PEAV123@@@YAPEAPEAVQueuedScheduler@Cesiu
mImpl@CesiumAsync@@PEAPEAV012@0QEAV012@@Z)
UATHelper: Packaging (Windows): Module.CesiumRuntime.6_of_6.cpp.obj : error LNK2001: unresolved external symbol __std_find_trivial_8
UATHelper: Packaging (Windows): C:\DEVELOPMENT\TheProject\Binaries\Win64\TheProject.exe : fatal error LNK1120: 1 unresolved externals

1 Like

Strange error, I’m not sure what you make of it. What version of Visual Studio are you using? I think 5.2 requires VS2019, and a particular version of it as well:

Using a too-old Visual Studio could cause stranger linker errors like that.

Hi Kevin…
Using 2019. All patched up to latest versions.

image

Is there possibly anything in the build.cs file that needs to be added or changed? This is what I have in mine right now for cesium support.

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "CesiumRuntime" });
		
// Required by Cesium.
CppStandard = CppStandardVersion.Cpp17;
bEnableExceptions = true;

Ive seen this error too. I think it was because it was using an older compiler/build tool. Im not sure which older version causes this kind of error, MSVC v140? I know MSVC v143 works for sure.

Hi Joseph

Does not look like MSVC v143 is available for VS 2019.
But I am up to date with the latest for what’s available for VS 2019 which is:
image

@Kevin_Ring
Is there a requirement on the Cesium 5.2 that requires VS2022 and MSVC v143?

We build the cesium-native portions of Cesium for Unreal using VS2019. Here are the relevant lines from our CI build that produced the v1.27.0 version:

-- Building for: Visual Studio 16 2019
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.20348.
-- The CXX compiler identification is MSVC 19.29.30148.0
-- The C compiler identification is MSVC 19.29.30148.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped

Visual Studio versions are shockingly confusing, but this article helps:

If I’m reading all this right, we build v1.27.0 with the very latest version of VS 2019.

However, if you installed Cesium for Unreal from the Epic Launcher, you got a version of the plugin built by Epic, not by us. So what did they use? It’s hard to say. Typically they’d use the oldest supported compiler, but there’s really no way to be sure.

So I can think of a few of things to try:

  1. Uninstall the plugin from the Epic Launcher, and install it manually from our releases page. Just in case Epic is building with a newer MSVC for some reason. Releases are here:
    Releases · CesiumGS/cesium-unreal · GitHub

  2. Make sure you don’t have any older toolchains installed, just in case Unreal is somehow picking up the wrong one.

  3. Install VS2022!

Hi Keven…

Thanks for the feedback… I did download Cesium from the epic store. I was able to get past the build error going a different route.

I pulled the Cesium plugin out of the Epic.…\plugins file structure,
I put it in my project\plugins folder.
I deleted all the saved, intermediate etc folders and created a fresh set VS project files
Opened VS build the project
Opened UE 5.2, confirmed that everything ran in the PIE
Then did a Shipping Package Build.
Tested build
That all seemed to work great.

Then I took the entire plugin out of my project and coped it back into the Epic.…\plugins folder structure.
Deleted the saved, intermediate etc folders
Created a fresh set of VS project files

Retested everything again…
This all worked for me.

I’ll give your method a try as soon as I can as well!

Thank you so much for your support, it’s really appreciated!
(BTW, would love to install VS 2022, but not an option for our org at the moment)
Rick

2 Likes

Hi Rick,

I had the same packaging problem, and I’m working with VS2019 MSVC v142, too. Your workaround solved it for me, thanks for sharing!

Best
Andreas

Hi Lildreas!
Right on! I’m glad it helped.

1 Like

您好,我用的您的方法。
1.删掉UE5安装目录即UnrealEngineer\UE_5.2\Engine\Plugins\Marketplace文件夹下的cesium for ue插件,取而代之的是git上面下载的文件,解压后直接放到该位置。
2.UE5中重新勾选该插件。
我用的是vs2019。
最后即可打包成功。