Compilation error with v2.15.0

Hi everyone,

I got this error while trying to compile the latest (v2.15.0) CesiumForUnreal plug-in.
I am on Windows AMD64 & UE 5.5
Any idea ?

   Creating object D:\XXXX\XXXXX\Plugins\CesiumForUnreal\Binaries\Win64\UnrealEditor-CesiumRuntime.exp
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupRefreshTilesets(struct Cesium::SceneGenerationContext &,class std::variant<int,float>)" (?setupRefreshTilesets@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@V?$variant@HM@std@@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGoogleChryslerWarm::RunTest(class FString const &)" (?RunTest@FLoadTilesetGoogleChryslerWarm@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupClearCache(struct Cesium::SceneGenerationContext &,class std::variant<int,float>)" (?setupClearCache@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@V?$variant@HM@std@@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGooglePompidou::RunTest(class FString const &)" (?RunTest@FLoadTilesetGooglePompidou@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForPompidou(struct Cesium::SceneGenerationContext &)" (?setupForPompidou@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGooglePompidou::RunTest(class FString const &)" (?RunTest@FLoadTilesetGooglePompidou@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForChrysler(struct Cesium::SceneGenerationContext &)" (?setupForChrysler@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGoogleChrysler::RunTest(class FString const &)" (?RunTest@FLoadTilesetGoogleChrysler@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForGuggenheim(struct Cesium::SceneGenerationContext &)" (?setupForGuggenheim@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGoogleGuggenheim::RunTest(class FString const &)" (?RunTest@FLoadTilesetGoogleGuggenheim@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForDeathValley(struct Cesium::SceneGenerationContext &)" (?setupForDeathValley@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGoogleDeathValley::RunTest(class FString const &)" (?RunTest@FLoadTilesetGoogleDeathValley@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForTokyo(struct Cesium::SceneGenerationContext &)" (?setupForTokyo@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGoogleTokyo::RunTest(class FString const &)" (?RunTest@FLoadTilesetGoogleTokyo@@MEAA_NAEBVFString@@@Z)
12>GooglePhotorealistic3dTilesLoad.perf.cpp.obj: Error LNK2019 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForGoogleplex(struct Cesium::SceneGenerationContext &)" (?setupForGoogleplex@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z) referenced in function "protected: virtual bool __cdecl FLoadTilesetGoogleGoogleplex::RunTest(class FString const &)" (?RunTest@FLoadTilesetGoogleGoogleplex@@MEAA_NAEBVFString@@@Z)
12>TileLoadingSoakTest.cpp.obj: Error LNK2001 : unresolved external symbol "public: static void __cdecl Cesium::GoogleTilesTestSetup::setupForGoogleplex(struct Cesium::SceneGenerationContext &)" (?setupForGoogleplex@GoogleTilesTestSetup@Cesium@@SAXAEAUSceneGenerationContext@2@@Z)
12>UnrealEditor-CesiumRuntime.dll: Error LNK1120 : 8 unresolved externals

Hi @byjtew,

Those functions are defined in this source file:

I’m not sure why they wouldn’t be found by the linker on your system. Perhaps you need to regenerate the Visual Studio solution?

Hi,
It seems the issue was due to the inline keyword in the .cpp file, removing it fixed the issue.

FYI for future CI: Using Visual Studio 2022 14.43.34808 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808) and Windows 10.0.22621.0 SDK (C:\Program Files (x86)\Windows Kits\10).

1 Like

Hi @byjtew,

Thank you for finding a fix and posting your solution! We’d welcome a community contribution for this fix if you’re able! :smiley:

1 Like

I searched every single possible solution regarding Cesium Linking error and this was the only thing that worked for me, thank you.

1 Like

@janine @Kevin_Ring
Possible to release a hot-fix release soon ?
Seems like more people are getting blocked on this release