首先写一个GoodLuck 类,里面包含native本地方法,这是用作C/C++实现的。也就是用C/c++实现java的native方法。 public class GoodLuck { private String string=""; private int num; public GoodLuck() { } static { System.out.println(System.getProperty("java.library.path")); System.loadLibrary("goodluck"); } public native static String getString(); public native static String getInt(); public native static void printOutString(); public native static void printOutInt(); public static void main(String args[]){ GoodLuck gl = new GoodLuck(); gl.getString(); gl.getInt(); gl.printOutString(); gl.printOutInt(); } } 然后用 javac命令运行GoodLuck.java文件,生成GoodLuck.class文件:javac GoodLuck.java,然后再用javah运行GoodLuck.class文件:javah GoodLuck。生成GoodLuck.h。GoodLuck.h的内容为: /* DO NOT EDIT THIS FILE - it is machine generated */ #include "jni.h" /* Header for class GoodLuck */ #ifndef _Included_GoodLuck #define _Included_GoodLuck #ifdef __cplusplus extern "C" { #endif /* * Class: GoodLuck * Method: getString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_GoodLuck_getString (JNIEnv *, jclass); /* * Class: GoodLuck * Method: getInt * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_GoodLuck_getInt (JNIEnv *, jclass); /* * Class: GoodLuck * Method: printOutString * Signature: ()V */ JNIEXPORT void JNICALL Java_GoodLuck_printOutString (JNIEnv *, jclass); /* * Class: GoodLuck * Method: printOutInt * Signature: ()V */ JNIEXPORT void JNICALL Java_GoodLuck_printOutInt (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif 然后用VC6.0新建工程testdll(注意:工程为MFC AppWizard(dll)工程) 然后记得将GoodLuck.h引入,还有jni.h(在jdk目录下),最后用C++实现这几个方法,编译后找到生成的dll文件,重命名为goodluck.dll,复制该dll文件与GoodLuck.class同目录下,运行java GoodLuck,就可以了。
java JNI调用c程序
最新推荐文章于 2021-11-25 00:16:56 发布