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