error: undefined reference to typeinfo for android::MediaSou

使用Android非公开API编译工程时,,出现以下错误:

/home/scm/Android/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/hello-jni/AVFormatSource.o: in function typeinfo for android::AVFormatSource:AVFormatSource.cpp(.data.rel.ro+0x8): error: undefined reference to ‘typeinfo for android::MediaSource’/home/scm/Android/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/hello-jni/AVFormatSource.o: in function construction vtable for android::MediaSource-in-android::AVFormatSource:AVFormatSource.cpp(.data.rel.ro+0x18): error: undefined reference to ‘typeinfo for android::MediaSource’/home/scm/Android/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/hello-jni/AVFormatSource.o: in function construction vtable for android::MediaSource-in-android::AVFormatSource:AVFormatSource.cpp(.data.rel.ro+0x54): error: undefined reference to ‘typeinfo for android::MediaSource’collect2: ld returned 1 exit statusmake: *** [obj/local/armeabi/libhello-jni.so] Error 1

原因:工程使用了系统库libstagefright.so,而该库是Android系统用no-rtti方式编译出来的,因此我们的工程也必须要用no-rtti方式编译。

解决方法:在Application.mk中,将APP_CPPFLAGS := -frtti 改为APP_CPPFLAGS := -fno-rtti(Android默认使用-frtti模式编译,必须强制改变)

参考:?utm_source=tuicool

转载请注明出处:

回避现实的人,未来将更不理想。

error: undefined reference to typeinfo for android::MediaSou

相关文章:

你感兴趣的文章:

标签云: