

JNIを利用して、Javaからshared objectでリンクされたC++のコードを呼び出しています。shared
objectは2つあって、どちらもGoogleのProtocol Buffersを利用しています。Java側で、異なる2つのshared
objectを読み込んだとき、以下のエラーが表示されます。

[code]

    [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
    
[/code]

どちらか片方だけのshared
objectを読み込んだ場合、エラーは起こりません。Javaから`System.loadLibrary()`をしたshared
objectをunloadする方法は無いかと思いましたが、そのようなものは見当たりません。

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


CC BY-SA 3.0
2017-01-30T09:05:37.137
32252
2022-10-06T07:51:27.603
2022-10-06T07:51:27.603
19110
10054
question
c++ jni protocol-buffers
JNIからProtocol Buffersを利用したときのエラー