当前位置: 首页 > news >正文

android studio cmake生成.a文件(静态库)及调用(c c++)静态库.a

第一步生成静态库.a文件:

cmake 语法如何生成静态库,就不介绍了,比较简单,我下文列出的参考资料里面有详细介绍。

add_library(${CMAKE_PROJECT_NAME} STATICsrc/CalculStatic.cpp)

在这里插入图片描述

这一步有坑,我刚开始的时候,也花了不少时间,死活都没有生成.a静态库文件。但是我多方查找资料,发现是可以生成静态库文件的。关键是要配置“targets” 。这个属性只有在“ defaultConfig” 下面才能配置出来,在大括号“android ”下面配置的“cmake ”是没有“targets”这个属性的,我就是因为在此耽搁了不少时间。一定要谨慎。

参考资料:https://stackoverflow.com/questions/64829357/specify-targets-in-externalnativebuild-of-the-build-gradle-file-no-signature-o

正确的build.gradle配置如下:

android {defaultConfig {:externalNativeBuild {cmake {targets "calStatic" // New line here!}}}externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"version "3.10.2"// targets "native-lib"  // Not here!}}
}

重新运行项目或者“Make Project”. 重新刷新目录,静态库.a文件就可以正确生成了。

参考资料:
android studio生成静态库没有*.a目标文件问题
android studio 3.2 使用cmake在jni生成及使用C/C++静态库

第二步使用静态库.a文件:

限制我们需要来调用我们刚刚生成的静态库.a文件

在这里插入图片描述

CMakeLists.txt


cmake_minimum_required(VERSION 3.22.1)project("cmake")add_library(${CMAKE_PROJECT_NAME} SHAREDnative-lib.cppsrc/libtest.c)#导入已经编译好的静态库 或者 动态库  本例导入的静态库
add_library(calStatic STATIC IMPORTED)
#设置静态库导入的路径
set_target_properties(calStatic PROPERTIES IMPORTED_LOCATION${CMAKE_CURRENT_SOURCE_DIR}/jni/${CMAKE_ANDROID_ARCH_ABI}/libcalStatic.a
)#通过target_link_libraries命令指明库文件,且通过target_include_directories命令指明相应的库头文件
target_include_directories
http://www.lryc.cn/news/158957.html

相关文章:

  • 本地部署体验LISA模型(LISA≈图像分割基础模型SAM+多模态大语言模型LLaVA)
  • SpotBugs代码检查:instanceof总是返回true(BC_VACUOUS_INSTANCEOF)
  • Redis的Java客户端:Jedis入门
  • 【完整代码】2023数学建模国赛C题代码--蔬菜类商品的自动定价与补货决策
  • idea:java: Compilation failed: internal java compiler error
  • 普罗米修斯(Prometheus)
  • JAVA面试题2012年版本
  • IED设备模型
  • HTTP代理如何设置
  • 【设计模式】单例设计模式
  • SpingBoot整合Sa-Token框架(1)
  • 软件测试技术题目大全【含答案】
  • C#__线程的优先级和状态控制
  • 103.36.167.X在服务器删除、复制文件的时候会出现卡的情况,是什么原因?
  • Vim 插件应用篇 vim-plug:简洁高效的Vim插件管理工具
  • springboot 请求https的私有证书验证
  • YOLO的基本原理详解
  • 【UE 材质】制作飘动的旗帜
  • windows苹果商店上架ipa(基于appuploader)
  • 什么是SpringCloud Eureka服务注册与发现
  • A Mathematical Framework for Transformer Circuits—Part (1)
  • 关于Maven中使用idea发布java项目的步骤:
  • 如何使用ArcGIS Earth制作地图动画视频
  • 【Linux成长史】Linux基本指令大全
  • ChatGPT:深度学习和机器学习的知识桥梁
  • python-基本数据类型-笔记
  • 如何使用API数据接口给自己创造收益
  • 第三方软件信息安全测评服务范围
  • 测试开发 | Java 接口自动化测试首选方案:REST Assured 实践
  • vue3:13、Vue3.3新特性-defineModel