Windows でビルドしたところ、このような見慣れないエラーに遭遇しました。
その時問題だった部分について知見を共有します。
原因は iOS 用のコード
C# から iOS のみで使うコードの呼び出しには、#if UNITY_IOS ~ #endif で囲むのが通例ですが、extern の箇所もつけておく必要があるんでした……。
問題のコード
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate void CallbackDelegate([MarshalAs(UnmanagedType.I4)] Int32 result); [DllImport("__Internal", EntryPoint = "registerAuthCallback")] static extern void RegisterAuthCallback([MarshalAs(UnmanagedType.FunctionPtr)] CallbackDelegate callback);
修正後
#if UNITY_IOS [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate void CallbackDelegate([MarshalAs(UnmanagedType.I4)] Int32 result); [DllImport("__Internal", EntryPoint = "registerAuthCallback")] static extern void RegisterAuthCallback([MarshalAs(UnmanagedType.FunctionPtr)] CallbackDelegate callback); #endif
修正後、無事にビルドすることができました。
iOS に限らず、一部のネイティブコードはきちんと #if ディレクティブで対処しないと他のビルドに影響をきたしますね。注意しましょう!