C3D Posted December 22, 2020 Share Posted December 22, 2020 Hi, I've been following the callback example @Corvuswrote here a while ago (link) and ran into some issues when using Unity's IL2CPP scripting backend instead of Mono. The editor is fine, but here are the errors I saw in a build: il2cpp, non static callback NotSupportedException: IL2CPP does not support marshaling delegates that point to instance methods to native code. The method we're attempting to marshal is: CallbackExample::EyeCallback il2cpp, static callback NotSupportedException: To marshal a managed method, please add an attribute named 'MonoPInvokeCallback' to the method definition. The method we're attempting to marshal is: CallbackExample::EyeCallback The solution was to make the EyeCallback static and add the MonoPInvokeCallback attribute to the method. Easy enough to fix, the main difficulty was figuring out what was different between editor and build. //other code internal class MonoPInvokeCallbackAttribute : System.Attribute { public MonoPInvokeCallbackAttribute() { } } private static EyeData eyeData = new EyeData(); [MonoPInvokeCallback] private static void EyeCallback(ref EyeData eye_data) { eyeData = eye_data; // do stuff with eyeData.. } So my question: is this the best way to deal with this? And for my own curiosity - I'm assuming Unity is removing this method in the 'stripping assemblies' step before changing the il into cpp. Why isn't it stripping this attribute too? Thanks Link to comment Share on other sites More sharing options...
Corvus Posted December 28, 2020 Share Posted December 28, 2020 @C3D Yes, the callback should probably be static anyways and adding the "MonoPInvokeCallback" attribute will be required for IL2CPP scripting backend support. I tested with stripping level on high and had no issues with the static callback & attribute. Also, if you are having issues between Unity editor and builds it can be helpful to check "Development Build" in the Unity Build Settings to attach the log console and easily see errors. Let us know if you have any further feedback or errors. Link to comment Share on other sites More sharing options...
doubleble Posted January 16, 2022 Share Posted January 16, 2022 Thanks for the solution! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now