top
Loading...
設計Java程序與C語言的接口
第一步:聲明本地變量

例如:

class NativeHello{
public native void nativeHelloWorld();
static{
System.loodlibrary("nativeTest");//調用nativeTest.dll庫文件
}

第二步:生成頭文件

先用javac編譯NativeHello.java,再用javah生成c的頭文件.h文件

第三步:生成根文件

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

第四步:編寫C程序(此處假定文件名為NativeTest.c)

#include <stdio.h>
#include <NativeHello.h>//指第二步生成的.h文件
#include <stubpreamble.h>//指JDK的include下的文件
void Nativehello_nativeHelloWorld(struct HNativeHello *this){
.........
}
/*函數名Nativehello_nativeHelloWorld不能任意指定,可以從javah生成的頭文件中查到,也可用

如下方法命名:類名_本地方法名(struct H類名 *this)*/

第五步:編譯DLL文件

將nativeTest.c和NativeHello.c編譯成DLL庫文件,文件名與System.loodlibrary("nativeTest")中的文件同名。

最后講一下測試的方法,源文件如下:

class UseNative{
public static void main(String []args){
NativeHello nh=new NativeHello();
nh.nativeHelloWorld();
}
}
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗