废话少说直接上代码.我们的JAVA文件"TestJni.java"中的代码看起来是这样纸的:
package mm.nn.oo; public class TestJni { public native void ShowStr(String Str); public native int Add(int x,int y); static { System.loadLibrary("TestJni"); } public static void main(String[] args) { new TestJni().ShowStr("This String IS From JAVA!"); System.out.println(new TestJni().Add(2,3)); } }接下来我们生成相应的C的.H文件.具体过程看本博客相应文章此处不再赘述.生成后的.H文件看起来是这样子的:
#include <jni.h> #ifdef __cplusplus extern "C" { #endif JNIEXPORT void JNICALL Java_mm_nn_oo_TestJni_ShowStr(JNIEnv *pEnv,jobject Obj,jstring Str); JNIEXPORT jint JNICALL Java_mm_nn_oo_TestJni_Add(JNIEnv *pEnv, jobject Obj, jint m, jint n); #ifdef __cplusplus } #endif为了简便我们将上一步生成的.H文件直接改成.C文件并在其中实现两个函数代码如下:
JNIEXPORT void JNICALL Java_mm_nn_oo_TestJni_ShowStr(JNIEnv *pEnv,jobject Obj,jstring Str) { const char* pStr = (*pEnv)->GetStringUTFChars(pEnv,Str,0); printf("%s\n",pStr); (*pEnv)->ReleaseStringUTFChars(pEnv,Str,pStr); } JNIEXPORT jint JNICALL Java_mm_nn_oo_TestJni_Add(JNIEnv *pEnv, jobject Obj, jint m, jint n) { return m+n; }然后我们将上一步的.C文件生成.DLL文件.你可以新建一个DLL工程也可以用命令行.我们这里选择后者来生成.具体步骤看上传的附件即可.
然后我们用javac TestJni.java命令生成对应的.CLASS文件并拷贝到与包名mm.nn.oo对应的文件夹mm\nn\oo下.然后执行命令java mm.nn.oo.TestJni即可.
本Demo涉及到的文件下载地址:http://t.cn/8swtB4A希望对大家有所帮助.文章讲的不是很详细但是大家稍稍摸索下就可以明白的拜拜