Android NDK從r5b版本開始有官方支持的STL了,有一個(gè)crystax版本早已經(jīng)支持。官方的支持有兩個(gè)版本一個(gè)是gnu的,一個(gè)是stlport。如果你需要在你的NDK程序中使用STL,那么需要在Application.mk文件中添加一個(gè)選項(xiàng),就是APP_STL := stlport_static。 其中APP_STL的取值有以下四種:
system --> 系統(tǒng)默認(rèn)的最小支持的C++運(yùn)行時(shí)庫
stlport_static --> 以靜態(tài)鏈接的方式使用stlport版本的STL
stlport_shared --> 以動(dòng)態(tài)鏈接的方式使用stlport版本的STL
gnustl_static --> 以靜態(tài)鏈接的方式使用gnu版本的STL
如果你和我一樣并沒有使用Android.mk和Application.mk,而是使用Code::Blocks或者Visual studio 2010,那么在配置環(huán)境時(shí),如果需要STL的支持,那么就需要注意自己要指定stl的包含路徑。鏈接就根據(jù)需要自己鏈接不同的版本。請注意,stlport有靜態(tài)鏈接和動(dòng)態(tài)鏈接兩種方式,而gnu的僅有靜態(tài)鏈接方法。
另外一個(gè)需要注意的就是官方提供的這個(gè)stlport版本不支持RTTI和異常,換言之,如果你使用了stlport版本的STL,則不能使用-fexceptions和-frtti這兩個(gè)編譯選項(xiàng)。