В моем apk есть две общие библиотеки с именами libX.so и libY.so . libX.so нужна особая функция с именем ZNSt6__ndk112basic_stringIwN4wc1614wchar16_traitsENS_9allocatorIwEEED1Ev , которая определена в libY.so .Поэтому мы связываем libX.so с libY.so при сборке.
Мое приложение сначала загружает libY.so , а затем загружает libX.so с использованием System.loadLibrary (). libY.so загружен правильно.Но при загрузке libX.so происходит сбой приложения со следующей ошибкой
java.lang.UnsatisfiedLinkError: сбой dlopen: не удается найти символ "ZNSt6__ndk112basic_stringIwN4wc1614wchar16_traits
Чтобы устранить проблему, я проверил следующий
- "nm libY.so" -> Показывает символ ZNSt6__ndk112basic_stringIwN4wc1614wchar16_traitsENS_9allocatorIwEEED1Ev
- вызываемый dlsym (RTLD_DEFAULT, ZNSt6__ndk112basic_stringIwN4wc1614wchar16_traitsENS_9allocatorIwEEED1Ev ) сразу после загрузки libX.so.dlsym возвращает ненулевое возвращаемое значение, которое означает, что символ загружен.Все еще происходит сбой приложения с той же ошибкой.
Даже после отладки в течение 2 дней, я не мог понять, что идет не так.
Может кто-нибудь сказать, если есть какие-либо другиевозможные причины, приводящие к этой проблеме.
Также, если вы знаете, как отладить эту проблему, кроме тех двух методов, которые я упомянул выше, пожалуйста, предложите.
Спасибо