如何在cmake中引用静态库(.a)

如何在cmake中引用静态库(.a),第1张

1.头文件

include存放的是编译库文件生成的头文稿丛枝件集合,比如curl目录,目录中都是.h文件,添郑弯加方式如下:

2.库文件

lib是存放库文件的目录,形如libxxx.so或键敏libxxx.a形式的文件,添加方式如下:

3.引用

库的引用可以直接取libxxx.a中的xxx部分,如下的curl、ssl、crypto就是:

1.编译报错“undefined reference to `pthread_create'”

解决办法:引入pthread库

2.编译报错“libcrypto.a undefined reference to symbol 'dlclose'”

解决办法: add -ldl after libcrypto and libssl in your link command.

在Ubutu上编译出来的.so文件,怎么添加到Android项目中去使用呢?目前:可以通过

Makefile方式和CMake方式桥物梁引入预编译静动态库(静态库.a 动态库.so)到项目中去使用。就目前而言CMake是Goole推荐使用方式,但是加入接手一个老的NDK项目是MakeFile方式,看不懂就GePi了,所以这里我们还是介绍一下MakeFile方式将静动态库加入到AS中,完成NDK项目的开发。废话不多说,直接撸步骤了:

1、在src/main目录下创建一个ndkBuild文件夹

2、在此文件中创建一个Android.mk文件

3、在此文件中创建一个test.c的源文件蚂者

4、将编译好的的.so库复制到src/main目录下

如图所示目录结构:

1、编辑Android.mk文件

2、编辑grade(app)文件

3、编辑test.c文件

4、使用编译好的.so库里面的函数

本结果运行在Android 5.1 系统上

再次运行在Android8.0系统上

看以清楚知道,其实我们的APK包里面就没有libMainTest.so库,所以APP在8.0上会出现奔溃的现象。so...

1、在src/main目录下创建一个cmake文件夹

include:里面包含需要一些头文件

cmakeTest.c:需要编译的源文件

2、在app目录下创建一个文件:CmakeLists.txt

3、编辑grade(app)

4、编辑cmakeTest.c文敏运件

4、引用编译好的libcmakeTest.so

Android 8.0.0系统:

Android 5.1.1系统:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11987721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存