#android-ndk
#android-ndk
Вопрос:
При компиляции кода c с использованием Android NDK я получаю следующую ошибку:
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `~exception':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:31: multiple definition of `std::exception::~exception()'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:65: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `~exception':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:31: multiple definition of `std::exception::~exception()'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:65: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `~bad_exception':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:33: multiple definition of `std::bad_exception::~bad_exception()'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:67: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o):(.data.rel.ro._ZTVSt13bad_exception 0x0): multiple definition of `vtable for std::bad_exception'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):(.data.rel.ro 0xf0): first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `~bad_exception':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:33: multiple definition of `std::bad_exception::~bad_exception()'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:67: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `std::exception::what() const':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:46: multiple definition of `std::exception::what() const'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:68: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `std::bad_exception::what() const':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:52: multiple definition of `std::bad_exception::what() const'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:69: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `~exception':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:31: multiple definition of `std::exception::~exception()'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:65: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o): In function `~bad_exception':
/tmp/ndk/src/build/../gcc/gcc-4.4.3/libstdc -v3/libsupc /eh_exception.cc:33: multiple definition of `std::bad_exception::~bad_exception()'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):/tmp/ndk-toolchain/ndk-prebuilt-31319/sources/cxx-stl/stlport/src/dll_main.cpp:67: first defined here
/System/Library/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib/libsupc .a(eh_exception.o):(.data.rel.ro._ZTVSt9exception 0x0): multiple definition of `vtable for std::exception'
/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libstlport_static.a(dll_main.o):(.data.rel.ro 0x108): first defined here
collect2: ld returned 1 exit status
make: *** [/Users/user/Documents/copperworkspace/Pinecone/obj/local/armeabi/libGenCertificate.so] Error 1
Я использую APP_STL := stlport_static в application.mk
Ребята, вы можете помочь?
Ответ №1:
Я, наконец, нашел ответ, просмотрев CPLUSPLUS-SUPPORT.html . В библиотеках stdc и stlport было несколько определений функций класса исключений. Поэтому вместо статического добавления библиотеки stlport я добавил ее динамически, изменив APP_STL в Application.mk как: APP_STL := stlport_shared
И это решило проблему 🙂
Комментарии:
1. есть какой-либо другой способ … то же самое не работает в моем случае. При импорте локального файла отображается предупреждение «множественное определение ..».
Ответ №2:
У меня была такая же проблема, но решения Нишанта Сони было недостаточно.
Убедившись, что не было дубликатов файлов или нескольких объявлений, то, что я сделал для решения, — это выполнил команду Android Studio «Очистить«. (Сборка -> Очистить проект).
Проблема, возможно, заключалась в том, что я изменил путь к своему проекту (переместил папку)
Мне потребовалось много времени, чтобы разобраться в этом. Надеюсь, это поможет!