欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java与C语言混合编程方法.pdf

    • 资源ID:70327703       资源大小:445.71KB        全文页数:2页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java与C语言混合编程方法.pdf

    软件导刊2 0 0 75月号作者简介:何维(1 9 8 2-),男,湖北武汉人,研究方向为计算机软件与应用。J a v a 与C 语言混合编程方法探讨何维(武汉科技大学中南分校 现代教育技术学院,湖北 武汉,4 3 0 2 2 3)摘要:结合实例讨论了J a v a语言与C语言结合编程的方法。关键词:J a v a;C语言;本地接口;链接库中图分类号:T P 3 1 2 J A文献标识码:A文章编号:1 6 7 2-7 8 0 0(2 0 0 7)0 5-0 1 1 8-0 20前言J a v a语言具有分布式、多线程、安全高效和“与平台无关”等诸多优点,但正因其跨平台的特性,使得它与本地机器的内部联系成为其薄弱环节。例如,如何让J a v a程序控制硬件的驱动程序,或者是让J a v a程序和用其它编程语言编写的硬件接口相互通信。C语言程序和C+程序可以控制底层硬件。J a v a语言与C语言结合起来编程,能很好地解决J a v a程序对硬件接口的各类操作问题。1 J a v a结合C语言编程原理在J a v a代码中可以建立一种本地方法,称作“J a v a本地接口”(J a v a N a t i v e I n-t e r f a c e),但并不具体实现其功能。用J a v a编译器将包含此方法的J a v a源代码编译成与平台无关的二进制字节码。然后用J a v a h命令将此c l a s s文件转换成扩展名为h的C语言头文件。在转换过程中,J a v a h命令将只能在J a v a虚拟机上运行的二进制代码转换成可以被C语言编译器所识别的源代码。将此头文件包含在C语言的源代码中,用C语言来实现此本地方法的具体功能,即编写此方法所对应的C语言函数。最后将C语言源文件编译成对应平台的动态链接库文件,以便J a v a程序和C程序所调用。2声明本地接口在J a v a程序中,首先声明一个作为接口的本机方法,关键字是n a t i v e:/C P J a v a.J a v ap u b l i c c l a s s C P J a v a p u b l i c n a t i v e v o i dC J N a t i v e();s t a t i c S y s t e m.l o a d L i b r a r y(C J L i b );p u b l i c s t a t i c v o i dm a i n(S t r i n g a r g s)n e wC P J a v a().C J N a t i v e();代码中的S y s t e m.l o a d L i b r a r y()负责加载动态链接库文件。由于编译器在执行此类时,要首先执行s t a t i c代码段,所以也同时下载了l o a d L i b r a r y方法中的动态链接库文件。这里的库文件扩展名不用标明,系统会根据所在系统平台来判断是哪种类型。需要注意的是,在此例中作为本地接口的C J N a t i v e方法一定要标明n a t i v e类型,但不需要具体实现,参数也可不写。如果需要,可加入参数,例如:p u b l i c n a t i v e v o i dC J N a t i v e(i n t i);3编译并创建C语言头文件通过J a v a c命令将C P J a v a.J a v a源程序编译成C P J a v a.c l a s s程序文件:J a v a c C P J a v a.J a v a再用J a v a h命令生成扩展名为h的头文件:J a v a h-j n i C P J a v a在同一目录中生成了C P J a v a.h文件,其源码如下:/*D ON O TE D I TT H I SF I L E-i t i sm a c h i n e g e n e r a t e d*/#i n c l u d e/*H e a d e r f o r c l a s s C P J a v a*/#i f n d e f _ I n c l u d e d _ C P J a v a#d e f i n e _ I n c l u d e d _ C P J a v a#i f d e f _ _ c p l u s p l u se x t e r n C#e n d i f/*C l a s s:C P J a v a*M e t h o d:C J N a t i v e*S i g n a t u r e:()V*/J N I E X P O R Tv o i dJ N I C A L LJ a v a _ C PJ a v a _ C J N a t i v e(J N I E n v*,j o b j e c t);#i f d e f _ _ c p l u s p l u s#e n d i f算法与语言1 1 8软件导刊2 0 0 75月号#e n d i f注意,该文件由编译器自动生成,不要去修改它,以免接口调用错误。4在C语言程序中实现具体的接口功能现可将生成的.h头文件包含在C语言代码中。然后用C语言实现具体功能。在C P J a v a.h文件中已经包含了一个j i n.h头文件。该文件被放在J D K安装目录下的i n c l u d e文件夹中,它里面包含了一些重要的定义,如J N I E n v、j o b j e c t等类型,用以配合C编译器完成工作:#i n c l u d e 在具体实现的过程中,只需要关注函数J a v a _ C P J a v a _ C J N a t i v e:J N I E X P O R Tv o i dJ N I C A L LJ a v a _ C P-J a v a _ C J N a t i v e(J N I E n v*,j o b j e c t);其中,J N I E X P O R T和J N I C A L L是关键字,表示此函数要被J N I调用。用C语言具体实现此函数方法如下:#i n c l u d e C P J a v a.h J N I E X P O R Tv o i dJ N I C A L LJ a v a _ C P-J a v a _ C J N a t i v e(J N I E n v*e n v,j o b j e c t o b j);p r i n t f(T h i si sae x a m p l ef o rJ N I n );需要格外注意的是,J a v a和C两种语言中相同数据类型的调用方式和存储空间大小是不同的。并且J a v a的字符串为1 6位u n i c o d e码,而C语言 的 字 符 串 用8位A S C I I码,在进行混合编程时,一定要考虑数据类型和字符编码转换的问题。J a v a语言提供了很多可以进行类型转换的方法(即函数),限于篇幅,本文不再叙述具体用法。5连接动态链接库文件最后将C语言源程序编译连接成动态链接库文件。动态链接库的文件名要与J a v a源程序中l o a d L i b r a r y方法指明的动态链接库文件名一致,并且要存放于J a v a程序所在目录,否则将无法运行。6结论由于采用了本地方法,J a v a程序也就失去了与平台无关的特性。只需要将动态链接库文件放在不同的主流系统平台上进行编译,再让其随软件一起安装,这样就能很好地解决跨平台问题。J a v a提供了良好的异常处理控制性能,即使动态库出现问题,一般也不会导致系统瘫痪。我们还可以将一些严重影响J a v a执行性能的代码段交给其它执行效率高的语言完成,例如,大量数学运算的功能等一些J a v a不擅长的应用。这样可以大大提升J a v a程序的效率。另外,还可以用C语言程序调用J a v a程序代码。总之,从以上两个角度看,混合编程的意义非常重大。参考文献:1 辛运帏,饶一梅,张钧.J a v a程序设计M.北京:清华大学出版社,2 0 0 1.(责任编辑:刘君)P r o g r a mmi n gT e c h n i q u e o f C o mb i n i n gJ a v aw i t hCH EWe i(Wu h a nU n i v e r s i t y o f S c i e n c e a n dT e c h n o l o g y Z h o n g n a nB r a n c h,Wu h a n4 3 0 2 2 3,C h i n a)A b s t r a c t:T h i s a r t i c l e d i s c u s s e s t h e p r o g r a m m e t e c h n i q u e o f J a v a c o m b i n i n g w i t hC,a n du s e s a p r a c t i c a l e x a m p l e t oi l l u m i n a t e t h e a p p l i c a t i o no f J a v a n a t i v e i n t e r f a c e.K e yw o r d s:J a v a;Cl a n g u a g e;n a t i v e i n t e r f a c e;l i n kl i b r a r y算法与语言1 1 9

    注意事项

    本文(Java与C语言混合编程方法.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开