我正在使用Android NDK,因为它目前不支持STL,我想知道是否有任何有这方面成功的人,或者知道哪个更适合Android平台:uSTL或STLPort的.
编辑:看起来另一种选择可能是CrystaX .NET.
从他们的网站:
...我从官方渠道重建的Android NDK r3的定制发行版.添加了对C++异常,RTTI和标准C++库的支持.
我试图在Android NDK C++文件中使用STL.我尝试使用map,vector和各种其他stl类,我无法编译它,因为它找不到文件.
我的类标题以:
#pragma once
#include <map>
#include <iostream>
#include <stdexcept>
#include <vector>
#include <set>
#include <list>
#include <algorithm>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
2> In file included from jni/../../Classes/Assist/Test.cpp:1:
2> jni/../../Classes/Assist/Test.h:2:15: error: map: No such file or directory
2> jni/../../Classes/Assist/Test.h:3:20: error: iostream: No such file or directory
2> jni/../../Classes/Assist/Test.h:4:21: error: stdexcept: No such file or directory
2> jni/../../Classes/Assist/Test.h:5:18: error: vector: No such file or directory
2> jni/../../Classes/Assist/Test.h:6:15: error: set: No such file or directory
2> jni/../../Classes/Assist/Test.h:7:16: error: list: No such file or …Run Code Online (Sandbox Code Playgroud) 我正在玩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!");
}
Run Code Online (Sandbox Code Playgroud)
我想添加一些修改,只是为了玩一下:
#include <algorithm>
Run Code Online (Sandbox Code Playgroud)
然后,在上面的函数中,我补充说:
int a;
a=std::min<int>(10, 5);
Run Code Online (Sandbox Code Playgroud)
但是编译器说它找不到文件'algorithm'并且min()不是std的一部分.
经过一番搜索,我发现android ndk有一个gnu-libstdc ++目录,里面有所有需要的std文件.阅读NDK文档,我已经了解到usint std ::*应该在不对代码进行任何修改的情况下工作(如果包含正确的头文件).但似乎gg on cygwin无法找到所需的文件.
为了能够在android ndk应用程序中的.cpp文件中使用std和stl,有哪些步骤?
我有一个Android项目,包含许多C++中的本机代码.但是,我无法构建我的库,因为它无法找到vector.h头文件.可能是什么问题 ?几乎所有页面中都包含了我的内容.
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <vector>
Run Code Online (Sandbox Code Playgroud)
编译器能够在每个文件中找出除vector.h之外的所有其他头文件.关于我哪里出错的任何建议?
注意:文件名结束,.cpp我已经尝试过#include <vector.h>,#include "vector.h"
谢谢 !
我有一个非常简单的helloworld.cpp程序
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用工具链中的交叉编译器为android x86编译它:
/Users/me/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/darwin-x86/bin/i686-android-linux-g++ helloworld.cpp -L "/Users/me/android-ndk-r8/sources/cxx-stl/stlport/libs/x86/" -lstlport_static
Run Code Online (Sandbox Code Playgroud)
但是,我得到错误:
helloworld.cpp:2:20: error: iostream: No such file or directory
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?