我正在玩android ndk。我正在使用带有 cygwin(最新版本)的 Window Vista。我在手机上编译并启动了 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>
然后,在上面的函数中,我添加了:
int a;
a=std::min<int>(10, 5);
但是编译器说它找不到文件“算法”并且 min() 不是 std 的一部分。
经过一番搜索,我发现 android ndk 有一个 gnu-libstdc++ 目录,其中包含所需的所有 std 文件。阅读 NDK 文档,我了解到 usint std::* 应该可以在不修改代码的情况下工作(如果包含正确的头文件)。但似乎 cygwin 上的 gcc 无法找到所需的文件。
为了能够在 android ndk 应用程序的 .cpp 文件中使用 std 和 stl,需要执行哪些步骤?