实现Java与C语言接口步骤

王朝java/jsp·作者佚名  2008-05-19
宽屏版  字体: |||超大  

第一步:声明本地变量

<CCID_NOBR <CCID_CODE例如:class NativeHello{

public native void nativeHelloWorld();

static{

System.loodlibrary("nativeTest");//调用nativeTest.dll库文件

}

}</CCID_CODE

</CCID_NOBR

第二步:生成头文件

先用javac编译NativeHello.java,再用javah生成c的头文件.h文件

第三步:生成根文件

命令如下:javah -stubs NativeHello (生成NativeHello.c文件)

第四步:编写C程序(此处假定文件名为NativeTest.c)

<CCID_NOBR <CCID_CODE#include <stdio.h

#include <NativeHello.h//指第二步生成的.h文件

#include <stubpreamble.h//指JDK的include下的文件

void Nativehello_nativeHelloWorld(struct HNativeHello *this){

.........

}/</CCID_CODE

</CCID_NOBR

*函数名Nativehello_nativeHelloWorld不能任意指定,可以从javah生成的头文件中查到,也可用 如下方法命名:类名_本地方法名(struct H类名 *this)*/

第五步:编译DLL文件

将nativeTest.c和NativeHello.c编译成DLL库文件,文件名与System.loodlibrary("nativeTest")中的文件同名

最后讲一下测试的方法,源文件如下:

<CCID_NOBR <CCID_CODEclass UseNative{

public static void main(String []args){

NativeHello nh=new NativeHello();

nh.nativeHelloWorld();

}

}</CCID_CODE

</CCID_NOBR

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有