Android application链接c++库

Android Studio开发之使用STL这个C++常用的东东 1、在jni目录下,添加Application.mk文件,直接附上源码: # APP_ABI := armeabi-v7a 这里设置是无效的,必须在app目录下的build.gradle设定 ndk{} # APP_STL := stlport_static APP_STL := c++_static #推荐使用,功能更强大!!! 备注:其中APP_STL := c++_static 就... 阅读详情
APP_STL := gnustl_static
指定application里要链接的标准c++库。如果不指定,默认情况下,使用最小化的c++运行时系统库。
但是似乎APP_STL只是对动态库有效,如果是exe程序,则没有效果(据说是ndkr6的一个bug),需要显示地指定用gnustl_static。
如Android.mk里:
LOCAL_STATIC_LIBRARIES := libTest1 libTest2 gnustl_static

从android-ndk-r6b\sources\cxx-stl\gnu-libstdc++\Android.mk内容:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := gnustl_static
LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libstdc++.a
LOCAL_EXPORT_CPPFLAGS := -fexceptions -frtti
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include \
                           $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/include
include $(PREBUILT_STATIC_LIBRARY)

可知,gnustl_static其实就是LOCAL_MODULE 名字,指定了c++库用gnu的libstdc++.a静态库。
既然APP_STL对exe程序无效,那么在exe的make中显示地指定要链接的c++库对应的LOCAL_MODULE名字为gnustl_static。在NDK中编译exe的时候,编译器是能识别到LOCAL_MODULE名字为gnustl_static的module的。所以编译exe就能正常work了。

在ndk-build 加参数V=1可以查看编译时的详细参数输出,如NDK自带的gcc的路径。

Android平台调用so库中函数的流程及一些坑 一.Android平台如果要调用一些C/C++语言的所编译生成的库的函数一般要进行一下几个步骤。      1.确保我们的so库是用 ndk 或者 arm-linux-androideabi-gcc编译而成,如何编译参考上一篇文章。      2.如果我们的安卓应用程序是在studio中开发用java所写,那么我们 需要配置以下内容: a:  去Android官网下载 阅读详情

相关推荐

ndk-build C++优化

Application.mk文件内容 APP_OPTIM := release OPT_CFLAGS := -O2 -fno-exceptions -fno-rtti OPT_CPPFLAGS := $(OPT_CLFAGS) APP_CFLAGS := $(APP_CFLAGS) $(OPT_CFLAGS) APP_CPPFLAGS := $(APP_CPPF

--------→成人不自在,自在不成人℃ ------------ 3502

Android开发实践:如何设置NDK的编译选项

本文是我的《Android NDK开发》系列的又一篇文章,上篇文章中,我分享了一个可以自动添加源文件列表的 Android.mk 示例模板,方便大家快速地搭建起完整的 NDK 开发工程框架,本文则主要探究几个主要的 NDK 编译选项的配置,其中包括:APP_ABI、LOCAL_LDLIBS、LOCAL_CFLAGS、APP_STL 这几项,让你从此不再对 NDK 的编译参数望而生却。1. 概述 首...

weixin_33979363的博客 310

Matlab安装Embedded Coder Support Package for Texas Instruments C2000 Processors教程

Matlab安装Embedded Coder Support Package for Texas Instruments C2000 Processors

m0_69133594的博客 2822

Cocos2d-x 3.2编译生成Android程序出错的解决方案:c++_static报错

最近升级到Cocos2d-x 3.2正式版,iOS程序编译没任何问题,结果使用cocos compile -p android编译生成APK程序,结果悲剧了,出现以下错误。 Android NDK: Invalid APP_STL value: c++_static Android NDK: Please use one of the following instead:  system s...

iteye_7202的博客 439

用Python+ArcGIS分析厦门共享单车数据:5分钟搞定订单时长与距离分布的可视化

本文详细介绍了如何利用Python和ArcGIS Pro 3.x快速分析厦门共享单车数据,实现订单时长与距离分布的可视化。通过数据清洗、预处理和高级可视化技巧,揭示用户行为特征,为运营优化提供数据支持。文章还提供了环境配置、代码示例和业务洞察,帮助开发者高效完成数据分析任务。

weixin_28327051的博客 335

拆解博世、大陆的EMB方案:自增力机构如何省下83%的能耗?

本文深度解析了博世和大陆的电子机械制动(EMB)技术,重点探讨了自增力机构如何实现83%的能耗节省。通过对比电机直驱型和自增力型EMB的技术参数,揭示了自增力机构在能量优化和系统集成方面的创新优势,为汽车电动化和智能化提供了关键技术支持。

weixin_42665725的博客 390

Android gnustl_static VS gnustl_share

0. 前言 使用gnustl_static,尽量避免使用gnustl_share。此外gnustl将逐步废弃! 1. gnustl 1.1 简介 gnustl: Android上的GNU C++库,对应GNU/Linux系统中的libstdc++。 这个库和GCC仅仅绑定,但是后期不再更新,最新NDK不再支持 此库和Clang存在部分冲突 Note: 新版NDK将会删

矩阵实验室 9443

HALCON 20.11实战:5步搞定工业图像异常检测(附完整代码)

本文提供了一份基于HALCON 20.11的工业图像异常检测实战指南。通过五个核心步骤——环境准备、数据预处理、模型训练、推理解析与工程化部署,详细演示了如何利用深度学习技术,仅使用正常样本快速构建并优化金属表面划痕等缺陷的检测模型,并附有完整可运行的HDevelop代码,助力工程师实现高效、智能的工业视觉质检。

weixin_29243279的博客 139

NDK的APP_STL与APP_LDFLAGS

个人经验: Application.mk 第一种情况: APP_ABI := armeabi APP_STL := gabi++_static APP_LDFLAGS := -static  fatal error : string: No such file or directory 1>   #include 1>                    ^ 1>  co

zhangmiaoping23的专栏 1万+

AXI总线的Burst Type以及地址计算 | WRAP到底是怎么一回事?

AXI总线的transaction是burst-based的,因此有必要好好研究一下不同burst type的工作原理。此处略过burst的定义以及burst size、burst length等信号的介绍。

qiuzhongyu123的博客 2万+

电磁场仿真:电磁场基础理论_(13).微波技术基础

微波是指频率在300 MHz到300 GHz之间的电磁波。这一频率范围对应的波长为1米到1毫米。

2401_87715305的博客 1315

stl如果开o2_Android NDK编译带STL的 C/C++ 程序

我的这个C/C++程序, 可以成功的交叉编译到中兴,烽火的机顶盒上运行, 原以为编译到android应该也是一件简单的事情,但是做起来远比我想象的复杂得多。我的程序中有 .C 文件 和 .CPP 文件 , 其中 .CPP 文件中用到了 STL的string,编译成功后死活链接不到std::string库,提示报错undefined reference to `std::basic_string ...

weixin_42575325的博客 151

PCL 逐点插入法构建Delaunay三角网(C++详细过程版)

点云构建Delaunay三角网的逐点插入法基于PCL点云库的C++详细过程版实现

点云侠的博客 2991

NDK无法包含std的头文件(string,list等)的解决方法

原文:http://stackoverflow.com/questions/4893403/cant-include-c-headers-like-vector-in-android-ndk一句话:出了在Application.mk中添加APP_STL := stlport_static,还有修改代码文件后缀:将.c修改为cpp It is possible. Here is som...

diche7031的博客 416

海洋捕食者算法(MPA)详解:从海洋生态智慧到高性能优化

摘要: 海洋捕食者算法(MPA)是一种基于海洋生态觅食行为的元启发式优化算法,模拟捕食者(如鲨鱼)的布朗运动和莱维飞行策略进行全局与局部搜索。算法分为三阶段:高速比阶段(全局探索)、单位速度比阶段(平衡搜索)和低速比阶段(局部开发),通过精英矩阵和FADs效应(概率扰动)避免早熟收敛。MPA具有参数少、收敛快、寻优能力强等特点,适用于复杂优化问题,其数学模型将生物行为转化为随机游走与自适应策略,并通过收敛因子动态调整探索-开发平衡。实验表明,MPA在多个基准问题上表现优异。

qq_42212808的博客 273

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android jni stl,Android NDK中C++ STL库动态和静态链接

0x00 本文参考我们在开发NDK的时候,经常需要使用C++ STL库开发,那么这些库是如何和我们的程序链接的呢?0x01 C++ STL分类注意:libstdc++.so是android源码工程下,~/android-4.2.2/bionic/libstdc++目录下的代码生成的。这个so,在手机中位于/system/lib/libstdc++.so,每个进程都会默认加载一份。可以通过cat /...

weixin_31205797的博客 692

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android NDK介绍

Android NDK静态注册 动态注册: https://blog.csdn.net/weixin_38927522/article/details/119672156 1.如何编译原生程序 Application.mk(ARM硬件指令集/工程编译脚本/stl支持等) Android.mk(编译选项/头文件/源文件及依赖库等) local_path(call my-dir) include $(clear_vars) ...

Codeooo 博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

自定义Application.mk Android.mk jni目录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33957648的博客 213

cocos2d-x android 移植 问题

为什么80%的码农都做不了架构师?>>> ...

weixin_34179762的博客 107

Android错误捕获,Android 异常错误捕获:breakpad

beakpad库链接qt androidandroid ndk使用以下方法使用r12b ndk 支持armeabi armeabi-v7a使用r16b ndk 支持armeabi-v8a使用过官方的breakpad容易编译失败,很多资源被和谐// 下载c++ 异常捕获库// 参考文档https://www.jianshu.com/p/c1ff71c9b5efus@ubuntu:/opt/code/...

weixin_32204013的博客 428

android android.mk Application.mk

Android.mk    LOCAL_CPPFLAGS(预处理器标志)   指定头文件路径(属于编译器标志) LOCAL_CFLAGS   += -I$(LOCAL_PATH)/__pub_incLOCAL_CXXFLAGS += -I$(LOCAL_PATH)/__pub_inc   指定第三方库的路径和库名(属于连接器标志) LOCAL_LDFLAGS += -L$(LO...

靓靓软件工作室 211

Android NDK Stable APIs

每个api对应一系列头文件,一个共享库包含一系列的实现,这些必须链接到你的本地代码。 如果你需要使用系统库Foo,需要包含,在加载时还要告诉build system你需要链接/system/lib/libfoo.so, 此时需要这么做。   LOCAL_LDLIBS := -lfoo build system自动链接C library、数学库以及C++支持库,因此在LOCA

我是北上君 1126

android ndk编译 无法链接外部库,Android NDK - 链接外部库的问题(找不到它)

我在cygwin下使用Android NDK r6b(系统正确更新).我正在修改hello-jni示例以学习使用NDK.因为我有一个用C++编写的库,我希望在hello-jni中使用(实际上,我创建了一个名为helloworld的prj,其中包含一个名为ndkfoo.cpp的.cpp文件),我在Eclipse中创建了一个新的Android项目(更新为Android),添加了一个jni目录,添加了一...

weixin_34902464的博客 467

ndk 命令编译C或c++代码生成android 动态so库和可执行程序

NDK 命令ndk-build 会检查当前执行的目录下Jni 目录有没有Application.mk 和Android.mk 文件所以首先要写好这两个构建脚本 Application.mk APP_STL := gnustl_static #APP_CPPFLAGS := -frtti -fexceptions APP_CPPFLAGS +=-std=c++11 #允许使用c++11的函数等功...

qq_29333911的博客 2900

android jni开发中遇到的几点问题

一:从应用层向下编译so库 00. 准备工作 如果你还没有安装NDK: 下载,然后解压。无需安装。 https://developer.android.com/ndk/downloads/index.html#stable-downloads 解压得到android-...

178

备份一下手工书写Android JNI工程时mk的模板,以及uses VFP register arguments, output does not问题

Android JNI开发,手工建立MK模板: Application.mk APP_ABI := armeabi-v7a APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions -std=c++11 APP_PLATFORM := android-15 Android.mk LOCAL_PATH :

我的代码管家---houwenbin的专栏 1万+
上一篇: gcc和cc
下一篇: TCP/IP协议 三次握手与四次握手
nodeathphoenix
博客等级 码龄16年 97粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值