在Android NDK C++中使用STL

25

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

我的类头文件以以下方式开始:

#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:

我阅读了各种帖子,并尝试在application.mk文件中使用“APP_STL:= stlport_static”和“APP_STL:= gnustl_static”,但都没有成功。

有人知道如何使其工作吗?


1
我的建议是坚持使用Java API。真的 :( - paulsm4
也许这些链接可以帮助你:https://dev59.com/0W445IYBdhLWcg3wXZO9#4931170 和 https://dev59.com/FXI-5IYBdhLWcg3w1sTi。 - Yury
你使用的NDK版本是什么? - Emile Cormier
我正在使用NDK r7,不幸的是Yury发布的2个链接都无法使用。 - HardCoder
2个回答

43

我也遇到了同样的问题,后来发现需要在Application.mk中添加:

APP_STL := stlport_static

而不是Android.mk ... 哦。

然后我还需要将以下路径添加到Eclipse的包含路径中,以便在UI中不会出现错误提示:

${ANDROID_NDK_ROOT}\sources\cxx-stl\stlport\stlport


抱歉,对我来说没有起作用。相同的构建在Linux环境中运行良好,但在Windows中失败了。仍在寻找答案。 - Abhiram mishra
最好将c++_shared放入apk中,以便包含libcpp_shared.so。 - Sumit Kumar Saha

2

看起来问题是由于某种损坏的NDK引起的。我重新安装了它(删除、解压缩),现在它可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接