2012-02-26 86 views
24

我想在Android NDK C++文件中使用STL。我尝试使用map,vector和其他各种stl类,但我无法编译它,因为它找不到这些文件。使用STL与Android NDK C++

我的班头开头:

#pragma once 
#include <map> 
#include <iostream> 
#include <stdexcept> 
#include <vector> 
#include <set> 
#include <list> 
#include <algorithm> 

,我得到以下错误消息:

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 directory 
2> jni/../../Classes/Assist/Test.h:8:21: error: algorithm: No such file or directory 
2> In file included from jni/../../Classes/Assist/Test.cpp:1: 

我看各个岗位,并试图 “APP_STL:= stlport_static” 和 “APP_STL:= gnustl_static”在application.mk文件中,但它不起作用。

有谁知道我该如何获得这个工作?

+1

我的建议是坚持与Java API也不会抱怨。老实说:( – paulsm4 2012-02-26 23:14:31

+0

也许http://stackoverflow.com/questions/4893403/cant-include-c-headers-like-vector-in-android-ndk/4931170#4931170和http://stackoverflow.com/questions/1650963/ustl-or-stlport-for-android会帮助你。 – Yury 2012-02-26 23:37:29

+0

你使用的是什么版本的NDK? – 2012-02-26 23:37:45

回答

1

看来,这个错误是某种方式破坏了NDK。我重新安装它(删除,解压缩),现在它工作。

43

我有同样的问题,然后意识到,我需要把: APP_STL:= stlport_static

在Application.mk,不...的Android.mk卫生署

然后我需要添加: $ {ANDROID_NDK_ROOT} \来源\ CXX-STL \ stlport的\ stlport的

在Eclipse中包括路径,以在有关错误的UI

+0

对不起,我没有工作。在Linux环境下,相同的构建工作正常,但在Windows中失败。仍然在寻找答案。 – 2014-04-21 10:56:27

+0

它更好地把C++ _共享,以便在apk中包含libcpp_shared.so – 2017-04-07 20:17:56