I am trying to build a C++ code using NDK in android. I have a method which has a parameter vector < vector <float> > coordinates
Everything builds fine until I write this line inside my method
vector<float> firstPoint = coordinates.at(0);
I start getting this error
D:/eclipseworkspace/myLibProject/obj/local/armeabi/libmyLibProject.a(FileName.o): In function `std::priv::_Vector_base<std::vector<float, std::allocator<float> >, std::allocator<std::vector<float, std::allocator<float> > > >::_M_throw_out_of_range() const':
D:/androidndk/sources/cxx-stl/stlport/stlport/stl/_vector.c:45: undefined reference to `std::__stl_throw_out_of_range(char const*)'
collect2: ld returned 1 exit status
make: *** [/cygdrive/d/eclipseworkspace/myLibProject/obj/local/armeabi/libOutputName.so] Error 1
I have no clue why this is happening and Google is not helping either.
Thanks.
this looks like a linker error. You probably forgot to add STL library reference to your build. Or it can't be found
When I changed
to
it started compiling..... :s y?
This is a linking error. You need to add
APP_STL := stlport_static
to yourApllication.mk
file. Also make sure that you use-fno-exceptions
flag, since STLport is not compatible with C++ exceptions and RTTI.You can get more info in
APPLICATION-MK.HTML
which is availavle in thedocs
folder of the NDK.CPLUSPLUS-SUPPORT.HTML
is also worth to read.Did you do this ?
I think you are using two different implementation of the standard library in the same project.
It looks like you are compiling your files with (the headers of) an stlport implementation of the standard library in D:/android..., and you link against your local library.
You have to configure the linker in your ide (or Makefile) to use also the lib file of the same implementation (somewhere in D:/android... I guess).