Playmaker Help & Tips > iOS Help

Fixing IL2CPP linking errors[SOLVED]

(1/19) > >>

Alex Chouls:
Apparently IL2CPP for iOS does not support Unity Networking yet. To build a project with Playmaker:

* Import Assets/PlayMaker/Versions/PlayMakerNACL.unitypackage. These dlls have networking stripped out.
* Delete the PlayMaker/Actions/Network folder.
* Edit PlayMaker/Actions/CreateObject.cs and add UNITY_IPHONE To the #if list of platforms that don't support networking.
If you use networking in your project you will have to wait for Unity to support it in IL2CPP for iOS!

Alex Chouls:
Also please check these threads on the Unity forum if you're having problems with IL2CPP and iOS:

I followed all the instructions to the letter and this got rid of the linker errors!
Sadly my GUI that's based on the new Unity canvas system is also gone now. ;(
And XCode throws errors at me while the game runs that lots of scripts are missing. Does this have anything to do with this "fix"? The GUI worked fine before I switched to IL2CPP.

The errors all look like this:
"A script behaviour has a different serialization layout when loading. (Read 24 bytes but expected 84 bytes)
Did you #ifdef UNITY_EDITOR a section of your serialized properties in any of your scripts?
(Filename:  Line: 1170)

The referenced script on this Behaviour is missing!
(Filename:  Line: 1608)

A script behaviour has a different serialization layout when loading. (Read 24 bytes but expected 104 bytes)
Did you #ifdef UNITY_EDITOR a section of your serialized properties in any of your scripts?
(Filename:  Line: 1170)


EDIT: this is probably not a problem with Playmaker since others are getting the same errors when using the new GUI system.

Hi Alex,

I followed your instructions, and Xcode now builds my project without the original errors, but when it starts running on the device it shows up the following errors and can't load the next scene:

ArgumentException: Set Method not found for 'active'
  at System.IO.MonoIO.GetFileType (IntPtr handle, MonoIOError& error) [0x00000] in <filename unknown>:0
  at System.Reflection.MonoProperty.SetValue (System.Object obj, System.Object value, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] index, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
  at System.Reflection.StrongNameKeyPair.System.Runtime.Serialization.ISerializable.GetObjectData (System.Runtime.Serialization.SerializationInfo info, StreamingContext context) [0x00000] in <filename unknown>:0
  at System.Reflection.PropertyInfo.SetValue (System.Object obj, System.Object value, System.Object[] index) [0x00000] in <filename unknown>:0
  at PlayMakerTriggerStay..ctor () [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.ReflectionUtils.SetMemberValue (System.Reflection.MemberInfo member, System.Object target, System.Object value) [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.ReflectionUtils.SetMemberValue (System.Reflection.MemberInfo[] memberInfo, System.Object target, System.Object value) [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.FsmProperty.SetValue () [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.Actions.SetProperty.OnEnter () [0x00000] in <filename unknown>:0
  at SA_ScreenShotMaker+<SaveScreenshot>c__Iterator5.Reset () [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.FsmState.ActivateActions (Int32 startIndex) [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.FsmState.OnEnter () [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.Fsm.EnterState (HutongGames.PlayMaker.FsmState state) [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.Fsm.SwitchState (HutongGames.PlayMaker.FsmState toState) [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.Fsm.UpdateStateChanges () [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.Fsm.UpdateState (HutongGames.PlayMaker.FsmState state) [0x00000] in <filename unknown>:0
  at HutongGames.PlayMaker.Fsm.Update () [0x00000] in <filename unknown>:0
  at PlayMakerFSM.Update () [0x00000] in <filename unknown>:0
  at Replacements.Attribute.CheckParameters (System.Object element, System.Type attributeType) [0x00000] in <filename unknown>:0
Replacements.Attribute:CheckParameters(Object, Type)
(Filename: currently not available on il2cpp Line: -1)

Any idea what's wrong, and how to fix it?


Alex Chouls:
@LAB618 From the error, it looks like you're trying to use the SetProperty action to set a GameObject's active property which is depreciated since Unity 3.5. You should use the Activate Game Object action instead. If you right click Set Property in the Action Browser you can find where it's used...

@XilenceX This doesn't sound like anything that would be effected by the networking fix. IL2CPP support is still very new and Unity is still working out some kinks...


[0] Message Index

[#] Next page

Go to full version