我有以下问题:
我创建了 Java 项目,它通过 JNI 使用 C++ 动态库。它读取图像并分析其特征。当我运行 C++ 项目 时,它使用相同的库 - 一切都正常并且进程终止时没有错误,但是 Java 项目 在不同的图像上终止错误“崩溃发生在 native 代码中的 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
}
}
有人有什么想法吗?对于我的问题主题的任何建议,我将不胜感激。
最佳答案
您应该处理 vector 为空的情况(&fileContent[0]
此时可能无效。)
快速检查一下文件是否真的被打开了。
关于java - 运算符 reinterpret_cast<const uint8_t*> 后出现错误 "core dumped",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438374/