当今时代IT迅猛发展,这背后离不开程序员们的辛勤耕耘。JAVA作为一门成熟的语言,最大特点非跨平台莫属了,站得高看得远,所以能够实现跨平台,代价是底层的某些功能无法使用,学习JAVA的人应该在查看期库文件(源码)时肯定发现大量native关键字修饰的方法,咋看像抽象方法,没错可以认为它是抽象方法,因为其实现不是JAVA代码能够完成的,而是由C/C++才能完成的,废话少说,今天分享一个JAVA调用C代码的完整步骤。
前期准备工作(包括相关工具或所使用的原料等)C-free5.0(这是一个C开发IDE),Eclipse(LUNA,这是一个Java开发IDE)jna.jar(调用本地方法用到的一个开源JAR) 详细的操作方法或具体步骤
打开C-free5.0-->新建工程-->动态链接库,然后为工程命个名(这里命名为uk):

看右侧工程结构:source files为源文件(c源码文件)包,header files为头文件包,先打开头文件包下的uk.h头文件,然后如图所示,写个方法(C中称函数)say().

接着打开源文件uk.c,照图所示先写say()函数头,再实现say()函数,我们在这个函数里来输出一句话吧,到此为止,我们的C函数已经完成,稍后我们就调用该函数。


点击工具栏上的编译并执行(绿色按钮),之后弹出的对话框选择“否”,到工程目录下,把生成的DLL文件(本例为uk.dll)放到:C:\WINDOWS\system32目录下。




接下来是编写Java代码了,打开Eclipce新建一个工程,引入jna.jar(网上有,请自行下载),然后写一个内部接口,最核心的部分来了, Native.loadLibrary("uk",Uk.class);就是加载我们生成的uk.dll,这个内部接口同样有个say()函数,对应C中的say(),读者先回顾下这个过程,结合代码体会下。


最后在main函数里来看看执行结果吧,熟悉的请拍砖,没这么弄过的还可以追问。

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
