次の問題があります。
JNI を介して C++ ダイナミック ライブラリを使用する Java プロジェクトを作成しました。画像を読み取り、その特徴を分析します。同じライブラリを使用するC++ プロジェクトを実行すると、すべて問題なくプロセスはエラーなしで終了しますが、Java プロジェクトは別のイメージで終了し、「ネイティブ コードで Java 仮想マシンの外部でクラッシュが発生しました。コア ダンプされました」というエラーが表示されます。
エラーの原因となるコードは次のとおりです。
vector<char> getFileContent(const string &fileName)
{
ifstream file(fileName.c_str());
vector<char> buf;
copy( std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(),std::back_inserter(buf) );
return buf;
}
int analyzeFiles(vector<File> files)
{
//check for extension ". jpg"
for(size_t i = 0; i < files.size(); i++)
{
vector<char> fileContent = getFileContent(files[i].directory + '/' + files[i].fileName);
DrawingDetector dd(reinterpret_cast<const uint8_t*>(&fileContent[0]), fileContent.size()); //causes error in a runtime, terminates on any image
//the rest code
}
}
誰にもアイデアはありますか?私の質問の主題に関するアドバイスに感謝します。