蟻地獄

Twitterに書ききれない長めの文とか書くよ

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();
}

参考情報

github.com