Android基础Day13:C语言基础与JNI技术.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

11.1基础知识

JNI(JavaNativeInterface,JAVA原生接口)

使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互。

问:为什么要进行交互?

|-首先,Java语言的类库要求,且在数算,实时渲染的游戏上,音处理

等方面上与C/C++相比效率稍低。

|-然后,Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳

性能。

|-接着,使用Java调用本地的C/C++代码所写的库,省去了重复开发的,并且可以利

用很多开源的库提高程序效率。

C语言常见术语:

库函数:

|-为了代码重用,在C语言中了一些常用的、用于执行一些任务(如输入/出)的函

数,这些函数事先被编译,并生成目标代码,然后将生成的目标代码打包成一个库文件,以

供再次使用。库文件中的函数被称为库函数,库文件被称为函数库。

|-在Windows中C语言库函数中的中间代码都是以.obj为后缀的,Linux中是以.o为后缀。

提示:单个目标代码是无法直接执行的,目标代码在运行之前需要使用连接程序将目标代码

和其他库函数连接在一起后生成可执行的文件。Windows下.dll的文件,linux下.so.a的

文件.

头文件:xxx.h

|-头文件中存放的是对某个库中所定义的函数、宏、类型、全局变量等进行,它类似

于一份仓库。若用户程序中需要使用某个库中的函数,则只需要将该库所对应的头文件

include到程序中即可。

|-头文件中定义的是库中所有函数的函数原型。而函数的具体实现则是在库文件中。

|-简单的说:头文件是给编译器用的,库文件是给连接器用的。

|-在器连接程序时,会依据用户程序中导入的头文件,将对应的库函数导入到程序中。头

文件以.h为后缀名。

函数库:

|-动态库:在编译用户程序时不会将用户程序内使用的库函数连接到用户程序的目标代码

中,只有在运行时,且用户程序执行到相关函数时才会调用该函数库里的相应函数,因此动

态函数库所产生的可执行文件比较小。

|-静态库:在编译用户程序时会将其内使用的库函数连接到目标代码中,程序运行时不再

需要静态库。使用静态库生成可执行文件比较大。

在Linux中:

|-静态库命名一般为:lib+库名+.a。

|-如:libcxy.a其中lib说明此文件是一个库文件,cxy是库的名称,.a说明是静态的。

11.1Basic

knowledge

JNI(JavaNativeInterface,JAVAnativeinterface)usesJNItoenableJavacode

tointeractwithcodewritteninotherlanguages(suchasC/C++code).

Q:Whyinteract?

|-Firstofall,theclasslibraryprovidedbytheJavalanguagecannotmeettherequirements,andisslightlyl

essefficientthanC/C++intermsofmathematicaloperations,real-timerenderingofgames,audioand

processing,etc.

|-Then,theJavalanguagecannotdirectlyoperatethehardware,andtheC/C++codecannoto

nlyoperatethehardwarebutalsoizetheperformanceofthehardware.

|-Next,useJavatocalllibrarieswritteninlocalC/C++

文档评论(0)

lflebooks + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档