2011-08-25 172 views
3

我想在android中使用NDK構建一個C++代碼。我直到我寫我的方法,這裏面的線這個錯誤意味着什麼以及如何解決它?

vector<float> firstPoint = coordinates.at(0);

我開始收到此錯誤,有一個參數vector < vector <float> > coordinates

一切都建立精細的方法

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 

我不知道爲什麼這正在發生,谷歌也沒有幫助。

謝謝。

+0

索引0處是否有任何元素?看起來座標是空的。 – taskinoor

+0

正如我所說的座標是這個方法的參數,這是編譯時錯誤而不是運行時。是的,在運行時座標最終將至少有一個值 –

+0

你如何編譯和鏈接你的代碼?有沒有可能你錯過了標準庫? – john

回答

0

當我改變

vector<float> firstPoint = coordinates.at(0); 

vector<float> firstPoint = coordinates[0]; 

它開始編譯.....:S y時?

0

這看起來像一個鏈接器錯誤。您可能忘了將STL庫引用添加到您的構建中。或者它不能被發現

0

你這樣做了嗎?

#include <stdexcept> 
#include <vector> 
using namespace std; 
1

這是一個鏈接錯誤。您需要將APP_STL := stlport_static添加到您的Apllication.mk文件中。另外請確保您使用-fno-exceptions標誌,因爲STLport不兼容C++異常和RTTI。

你可以從APPLICATION-MK.HTML得到更多的信息,這可以在NDK的docs文件夾中找到。 CPLUSPLUS-SUPPORT.HTML也值得一看。

+0

已經這樣做 –

+0

請確保您使用'-fno-exceptions'標誌。 STLport與C++異常和RTTI不兼容。 –

+0

看到我的答案。任何想法爲什麼這項工作? –

1

我想你在同一個項目中使用了兩種不同的標準庫實現。

它看起來像你正在編譯你的文件(D的頭文件)標準庫的stlport實現在D:/ android ...,並且你鏈接到你的本地庫。

你必須在你的ide(或Makefile)中配置鏈接器來使用相同實現的lib文件(D:/ android中的某處...我猜)。

相關問題