MagicOnionをUnity 2019.4 + IL2CPP環境で使う
MagicOnionをUnity 2019.4 + IL2CPP環境でビルドしたらエラーが出てハマったのでメモ。
環境
- Unity 2019.4.26f1
- MagicOnion 4.3.1
- gRPC 2.42.0 (daily builds)
問題
Scripting BackendをIL2CPPにしてビルドするとこのエラーが出る。 github.com
解決法
Assets\Plugins\Grpc.Core\runtimes\grpc_csharp_ext_dummy_stubs.c
の末尾に下記のコードを追加するとビルドが通る。
void dlopen() { fprintf(stderr, "Should never reach here"); abort(); } void dlerror() { fprintf(stderr, "Should never reach here"); abort(); } void dlsym() { fprintf(stderr, "Should never reach here"); abort(); }
上記のIssueのコメントによるとこの方法だと解決しなかったっぽいが、私の環境だとこれだけで大丈夫だった。
ちなみにアプリケーション終了時にフリーズする場合はIStreamingHub.DisposeAsync()
を呼んでいないのが原因なので、MonoBehaviour.OnApplicationQuit()
とかで呼ぶようにする。
async void OnApplicationQuit() { await this.streamingClient.DisposeAsync(); }