Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linker error when packaging when the Cesium and Pixel Streaming plugins are both enabled #1420

Closed
alingkumo opened this issue May 11, 2024 · 5 comments · Fixed by CesiumGS/cesium-native#892

Comments

@alingkumo
Copy link

Hello everyone, When i use both Pixelstreaming and CesiumForUnreal, when I packing the project,the problem happened!!
I found a similar problem in CesiumGS/cesium-native@cd67f6f, should the native update or ?

webrtc.lib(numbers.obj) : error LNK2005: "char * __cdecl absl::numbers_internal::FastIntToBuffer(unsigned int,char *)" (?FastIntToBuffer@numbers_internal@absl@@YAPEADIPEAD@Z) already defined in s2geometry.lib(numbers.obj)
UATHelper: Packaging (Windows): webrtc.lib(numbers.obj) : error LNK2005: "char * __cdecl absl::numbers_internal::FastIntToBuffer(int,char *)" (?FastIntToBuffer@numbers_internal@absl@@YAPEADHPEAD@Z) already defined in s2geometry.lib(numbers.obj)
UATHelper: Packaging (Windows): webrtc.lib(numbers.obj) : error LNK2005: "char * __cdecl absl::numbers_internal::FastIntToBuffer(unsigned __int64,char *)" (?FastIntToBuffer@numbers_internal@absl@@YAPEAD_KPEAD@Z) already defined in s2geometry.lib(numbers.obj)
UATHelper: Packaging (Windows): webrtc.lib(numbers.obj) : error LNK2005: "char * __cdecl absl::numbers_internal::FastIntToBuffer(__int64,char *)" (?FastIntToBuffer@numbers_internal@absl@@YAPEAD_JPEAD@Z) already defined in s2geometry.lib(numbers.obj)
UATHelper: Packaging (Windows): webrtc.lib(numbers.obj) : error LNK2005: "unsigned __int64 __cdecl absl::numbers_internal::SixDigitsToBuffer(double,char *)" (?SixDigitsToBuffer@numbers_internal@absl@@YA_KNPEAD@Z) already defined in s2geometry.lib(numbers.obj)
UATHelper: Packaging (Windows): Creating library D:\Code\ESDemoCPP\Binaries\Win64\ESDemoCPP-Win64-Shipping.lib and object D:\Code\ESDemoCPP\Binaries\Win64\ESDemoCPP-Win64-Shipping.exp
UATHelper: Packaging (Windows): D:\Code\ESDemoCPP\Binaries\Win64\ESDemoCPP-Win64-Shipping.exe : fatal error LNK1169: one or more multiply defined symbols found

@alingkumo
Copy link
Author

PixelStreaming use WebRTC, then WebRTC use link to webtrc.lib

@kring
Copy link
Member

kring commented May 12, 2024

Looks like both WebRTC and S2Geometry link parts of Abseil into themselves statically. This is going to be very tricky to solve.

@kring kring changed the title conflict between s2geometry.lib and webtrc.lib that in ue Linker error when packaging when the Cesium and Pixel Streaming plugins are both enabled May 23, 2024
@Immersiv-1
Copy link

Hi @alingkumo, did you find a workaround for this issue? Thanks

@alingkumo
Copy link
Author

@Immersiv-1 I just change the absl namespace to others, and recompile s2geometry in the cesium native, that can work but not the best solution.

@kring
Copy link
Member

kring commented May 27, 2024

Yeah that's a good idea @alingkumo. We'll probably have to do something similar to fix it in the shipped version of Cesium for Unreal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants