Android std和stl支持

我正在玩android ndk。 我正在使用Windows Vista与cygwin(最新版本)。 我在手机上编译并启动了hello world jni示例。 这是工作。 代码是(是.cpp文件):

#include <string.h> #include <jni.h> extern "C" { JNIEXPORT jstring JNICALL Java_org_android_helloworld_HelloworldActivity_invokeNativeFunction(JNIEnv* env, jobject javaThis); }; jstring Java_org_android_helloworld_HelloworldActivity_invokeNativeFunction(JNIEnv* env, jobject javaThis) { return env->NewStringUTF("Hello from native code!"); } 

我想添加一些修改,只是为了玩一下:

 #include <algorithm> 

然后,在上面的function,我补充说:

 int a; a=std::min<int>(10, 5); 

但编译器说它找不到文件“algorithm”,而min()不是std的一部分。

经过一番search,我发现android ndk有一个gnu-libstdc ++目录,包含所有需要的std文件。 阅读NDK文档,我已经了解到usint std :: *应该没有任何修改的代码(如果包括正确的头文件)。 但似乎cygwin上的gcc无法find所需的文件。

为了能够在Android ndk应用程序中的.cpp文件中使用std和stl,需要执行什么步骤?

Solutions Collecting From Web of "Android std和stl支持"

从NDK r5的文档/ CPLUSPLUS-SUPPORT.html:

默认情况下,构buildC ++源代码时使用最小C ++运行时系统库(/system/lib/libstdc++.so)的头文件和库。

但是,您可以通过将variablesAPP_STL设置为Application.mk中的其他内容来select不同的实现,例如:

APP_STL:= stlport_static

select随NDK提供的静态STLport实现。 值APP_STL值如下:

系统 – >使用默认的最小C ++运行时库。
stlport_static – >使用构build为静态库的STLport。
stlport_shared – >使用构build为共享库的STLport。
gnustl_static – >使用GNU libstdc ++作为静态库。

你正在使用哪个NDK? 你有没有试过编译一个利用STL的示例应用程序,如test-libstdc ++?