Android NDK调用C++标准库问题

在Android NDK项目添加cpp文件,并引用C++标准库头文件:

#include <string>
#include <iostream>

使用ndk-build编译报如下错误:

fatal error: 'string' file not found
fatal error: 'iostream' file not found

原因:在使用C++的标准库进行NDK开发时,必须设置APP_STL

Application.mk解决方案

在jni文件夹下新建Application.mk文件,并加入:

#以下两行二选一
APP_STL  := stlport_static
#APP_STL := gnustl_static

Gradle解决方案

android.defaultConfig.ndk {
    moduleName = "hello-jni"
    stl        = "stlport_static"
}

APP_STL

APP_STL可取范围:https://developer.android.com/ndk/guides/cpp-support#c_runtime_libraries

不同的标准库能力也各有差异,见下表

APP_STL C++ Exceptions C++ RTTI Standard Library
system no no no
gabi++ no yes no
stlport no yes yes
gnustl yes yes yes

特别注意的是,引用的类库越全面,最后生成的库文件体积也越大。

上一篇 Android上使用Tesseract识别文字
下一篇 Android调用第三方so库的Gradle基本配置
目录
文章列表
1 Android获取APP当前进程的名称
Android获取APP当前进程的名称
2
比 Kubernetes Dashboard 更好用的管理工具 - Kuboard
比 Kubernetes Dashboard 更好用的管理工具 - Kuboard
3
AWS Auto Scaling Group 操作
AWS Auto Scaling Group 操作
4
Maven设置Http代理
Maven设置Http代理
5
Java实现3DES加密算法
Java实现3DES加密算法
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。