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する方法は無いかと思いましたが、そのようなものは見当たりません。

どのように対処すればよいでしょうか。