Я использую mupdf, чтобы открыть файл PDF в своем приложении для Android. Приложение вылетает с этой ошибкой.
java.lang.UnsatisfiedLinkError: ошибка dlopen: не удается найти символ "atof", на который ссылается "libmupdf_java.so"...
Это мой код Java для просмотра файла PDF.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.main_layout);
MuPDFCore core = null;
try {
core = new MuPDFCore(this,"/storage/emulated/0/Download/Metamorphosis-jackson.pdf");
} catch (Exception e) {
e.printStackTrace();
}
MuPDFReaderView reader = new MuPDFReaderView(this);
reader.setAdapter(new MuPDFPageAdapter(this, new FilePicker.FilePickerSupport() {
@Override
public void performPickFor(FilePicker filePicker) {
}
}, core ));
layout.addView(reader);
}
}
Код вылетает именно в этой строке.
core = new MuPDFCore(this,"/storage/emulated/0/Download/Metamorphosis-jackson.pdf");
Это журнал ошибок: -
Также я хотел бы знать, как я могу отображать все файлы PDF в списке и позволять пользователю выбирать из файлов для просмотра с помощью mupdf. Я новичок в программировании, поэтому любая помощь или предложение приветствуются.
Google переместил некоторые функции стандартной библиотеки C, такие как atof(), из встроенных функций в файлах заголовков в обычные функции. Последние версии NDK по умолчанию создают файл .so, совместимый только с последними устройствами Android, имеющими функцию atof() в стандартной библиотеке C устройства (libc.so). Это означает, что если вы запустите библиотеку на более старом устройстве с более старой версией библиотеки C, вы получите сообщение об ошибке при загрузке dll, поскольку ожидаемая функция atof() не будет существовать.