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 设计模式(9)责任链模式
设计模式(9)责任链模式
2
Python数组遍历
Python数组遍历
3
JDK动态代理的原理
JDK动态代理的原理
4
Redis的缓存穿透及解决方法——布隆过滤器BloomFilter
Redis的缓存穿透及解决方法——布隆过滤器BloomFilter
5
Appium自动化测试(12)—— Appium API 之 TouchAction 操作
Appium自动化测试(12)—— Appium API 之 TouchAction 操作
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。