【发布时间】:2011-08-25 06:08:43
【问题描述】:
我正在尝试在 android 中使用 NDK 构建 C++ 代码。我有一个方法,它有一个参数vector < vector <float> > coordinates
一切正常,直到我在我的方法中写下这一行
vector<float> firstPoint = coordinates.at(0);
我开始收到此错误
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
我不知道为什么会发生这种情况,Google 也没有提供帮助。
谢谢。
【问题讨论】:
-
索引 0 处有元素吗?看起来坐标是空的。
-
正如我所说,坐标是此方法的参数,这是编译时错误而不是运行时错误。是的,在运行时坐标最终将至少有一个值
-
你是如何编译和链接你的代码的?您是否可能缺少标准库?
-
如果编译器无法找到库那么为什么当我尝试访问值而不是在方法参数中声明它时会出现错误?
-
因为vector的实现大部分都在头文件中,所以不需要库。在您的情况下,除了vector :: at抛出的异常类之外,似乎所有内容都在头文件中。这似乎完全正常。 (STLPort 的一个令人困惑的方面是您会看到对 _vector.c 的引用,但如果您检查 STLPort 代码,您会发现 _vector.c 包含在矢量头文件中。
标签: android c++ compiler-errors android-ndk android-stlport