3
Есть ли способ выгрузить DLL, которая загружается в приложение с помощью вызова API System.load().Как выгрузить DLL, загружаемую System.load (путь к dll)
Есть ли способ выгрузить DLL, которая загружается в приложение с помощью вызова API System.load().Как выгрузить DLL, загружаемую System.load (путь к dll)
Чтобы загрузить DLL, вы должны использовать отдельный ClassLoader. DLL привязан только к загрузчику ClassLoader. Когда ClassLoader больше не используется (означает, что ссылки на ClassLoader отсутствуют), сборщик мусора освободит ваш ClassLoader и выгрузит вашу DLL.
Это самый простой способ. Я также использовал библиотеку-заглушку, которая выполняет загрузку реального из кода JNI, таким образом я контролировал загрузку выгрузки явно. – Petesh
@Petesh Не могли бы вы объяснить свой подход немного больше. Как именно вы обрабатывали разгрузочную часть? –
@KamalJoshi Здесь вы можете увидеть примеры кода: https://web.archive.org/web/20140704120535/http://www.codethesis.com/blog/unload-java-jni-dll – digz6666