We’ve been trying to get a Windows IL2CPP going, but getting AOT errors such as:
1
2
3
ExecutionEngineException:Attempting tocall method'NodeCanvas.Framework.Internal.ReflectedFunction'4[[System.Collections.IEnumerator,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.String,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Boolean,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[WorldController+WorldTypes,Assembly-CSharp,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null]]::.ctor'forwhich no ahead of time(AOT)code was generated.
at System.Reflection.MonoCMethod.InternalInvoke(System.Objectobj,System.Object[]parameters)[0x00000]in<00000000000000000000000000000000>:0
at System.RuntimeType.CreateInstanceMono(System.BooleannonPublic)[0x00000]in<00000000000000000000000000000000>:0
`
I understand from some research that using CheckFunction will cause this issues, so we need to use CheckFunction_Multiplatform, however we have hundreds of cases of the use of it and they have a different JSON format so it’s not easy to “swap” them out, is there any suggested way to do so?
Also wondering if ExecuteFunction will need to be converted to ExecuteFunction_Multiplatform?
Indeed, there is a difference in the multiplatform versions and the other ones, with only the multiplaform being supported in AOT platforms. Unfortunately there is no automatic conversion, but I will try to come up with something hacky to help you somehow convert the tasks to the multiplatform ones. Since this is going to be some work, please let me know what reflection tasks you are using. Are you only using CheckFunction and ExecuteFunction, or others as well?