Unity WebGL build gives an IL2CPP error
Fleurman opened this issue · 10 comments
Hi,
I'm on an Unity project that uses MongoDB.
I have all the MongoDB assemblies and dependencies wich includes ZstdSharp.
When building for WebGL, I get this error:
Error: IL2CPP error for method 'System.Void ZstdSharp.Unsafe.Methods::.cctor()' in assembly 'C:\Users\Fleurman\Scriipts\Library\Bee\artifacts\WebGL\ManagedStripped\ZstdSharp.dll'
System.ArgumentOutOfRangeException: Cannot create a constant value for types of System.UIntPtr for System.UIntPtr ZstdSharp.Unsafe.Methods::ZSTD_blockHeaderSize (Parameter 'declaredParameterOrFieldType')
I asked for help on the Unity forum and got this explanation:
"Unity uses the IL2CPP scripting backend to convert .NET assemblies to C++ to support AOT (Ahead Of Time) compilation which is a requirement on platforms like WebGL. The System.UIntPtr type in your error message is a pointer type and pointer arithmetic is not supported in IL2CPP which could be causing the error."
Also I'm told to "Check if there's a version of ZstdSharp that's compatible with WebGL."
I know it is more likely to be an issue with Unity and their IL2CPP, but do you think there is a way I could make it work ?
Thanks a lot !
While IL2CPP does support the System.UIntPtr and pointer arithmetic, constant nint
/nuint
are a recent addition to C# and IL2CPP clearly does not handle them well.
Potential fix would be changing this
const
to a static readonly
, or reporting a IL2CPP bug and waiting.Hi,
I am not familiar with the Unity.
How I can reproduce this issue?
Is it possible to run IL2CPP itself with ZstSharp?
It is fixed !
You are formidable thank you very much !!
PS: to answer to your first question, I don't think you can run IL2CPP by istelf.
Hi, it's fixed in version 0.7.2, but reopen in version 0.7.3, please check
@hoainam1593
What version of the Unity are you using?
it happen on both unity 2021.3.22 and 2022.3.13
The compilation error for 0.7.3 can be fixed, but now I'm getting a runtime error for 0.7.2 with Unity 2022.3.13f1 for code that previously worked
@hoainam1593
Released 0.7.4 with compilation fix for IL2CPP, runtime error still needs to be looked into
it works now on v0.7.4, many thanks