废话少说直接上代码.我们的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希望对大家有所帮助.文章讲的不是很详细但是大家稍稍摸索下就可以明白的拜拜