JNIからProtocol Buffersを利用したときのエラー
JNIを利用して、Javaからshared objectでリンクされたC++のコードを呼び出しています。shared objectは2つあって、どちらもGoogleのProtocol Buffersを利用しています。Java側で、異なる2つのshared objectを読み込んだとき、以下のエラーが表示されます。
[libprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: hoge.proto
[libprotobuf FATAL google/protobuf/descriptor.cc:1164] CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
terminate called after throwing an instance of 'google::protobuf::FatalException'
what(): CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
Aborted
どちらか片方だけのshared objectを読み込んだ場合、エラーは起こりません。JavaからSystem.loadLibrary()
をしたshared objectをunloadする方法は無いかと思いましたが、そのようなものは見当たりません。
どのように対処すればよいでしょうか。