Также недавно столкнулся с этой проблемой, и это также происходит только в Windows при выполнении отладочной сборки.Мне никогда не удавалось найти исправление кода, чтобы сделать компоновщик LD счастливым и устранить ошибки.
Однако я смог переключиться на использование компоновщика LLD LLVM и снова получить отладочную сборку, работающую в Windows.После переключения компоновщик LLD обнаружил некоторые ошибки компоновщика, которые LD, казалось, никогда не обнаруживал.После исправления этих проблем я смог снова успешно собрать.
Чтобы переключиться на использование компоновщика LLD, я добавил следующие флаги компоновщика в свою сборку:
-fuse-ld=lld
-Wl,--no-threads
Компоновщик LLD был создандоступно в NDK r18, поэтому вам нужно будет построить с использованием подходящего NDK, иначе флаги не будут распознаны.
Я использую CMake, поэтому я просто добавил эти флаги в конце своего объявления target_link_libraries в моей общей библиотеке.
Я добавил второй флаг, "-Wl, - no-threads", чтобы отключить многопоточное связывание, которое, очевидно, может быть проблемой в Windows и привести к зависанию (см. https://github.com/android-ndk/ndk/wiki/Changelog-r19больше информации).
Если вы используете ndk-build, то многопоточное связывание уже должно быть отключено по умолчанию (начиная с NDK r19b).
ПРИМЕЧАНИЕ. В настоящее время я собираю с помощью NDK r19c.В итоге Android NDK по умолчанию переключится на компоновщик LLD LLVM (по оценкам, r21).