For some reason I want to use FreeImage library in my android ndk project ,but while I am building this static library with ndk-build, It compiled the source quite OK, but failed during the link step, with the undefined reference to somefunction error.
After a lot search I add the LOCAL_ALLOW_UNDEFINED_SYMBOLS=true to the Android.mk.
But at last this method demonstrate to be a wrong solution for most time, it just give you a false sense of security, because it will give you a big unsatisfiedLinkError at run time .
The really reason for the line error is a order-of-linking problem.
his looks like an order-of-linking issue to me.
Your command line is:
arm-linux-androideabi-g++ -Wl,-soname,libFinal.so -shared \ libBase.a libFramework.a libGraphics.a libPlatform.a -o libFinal.so
and the error is
libPlatform.a(ATexture.o): In function `ATexture': ATexture.cpp:9: undefined reference to `TextureRenderer' ATexture.cpp:9: undefined reference to `TextureRenderer'
TextureRenderer is in Graphics. But libGraphics is before libPlatform on the command line. g++ will search each library on the command line in the order they are given, loading functions to resolve external references. It will read libGraphics once, load the functions that resolve external references and move on to libPlatform.
Try changing LOCAL_STATIC_LIBRARIES := $(MY_LOCAL_STATIC_LIBRARIES)
toLOCAL_STATIC_LIBRARIES := Platform Graphics Framework Base
and see how you get on
http://stackoverflow.com/questions/4765465/android-ndk-two-static-libraries-and-linking