学习了JNI,大概总结了一下。不过在做的过程中,我也碰到了好多问题,不过终于都搞定了,很有成就感的说。
1. Java class
package com.xida.jnitest;
public class Testjni {
native void testJNIcall();--------------通过NATIVE方法调用C的方法。
static {
System.loadLibrary("testJNIImpl");
}
public static void main(String[] args) {
Testjni test = new Testjni();
test.testJNIcall();
}
}
2. 编译 java class
3.javah—生成C的.h 文件
javah -jni -classpath D:\myworkspace\JavaTrainning -o Testjni.h com.xida.jnitest.Testjni
4. c/c++ file
#include
#include "Testjni.h"
JNIEXPORT void JNICALL Java_com_xida_jnitest_Testjni_testJNIcall
(JNIEnv *env, jobject jobj)
{
printf("aaaaaaaaaaaaaaaaa");
}
5.make dll
cl -Ic:/j2sdk1.4.2_09/include -Ic:/j2sdk1.4.2_09/include/win32 -LD testJNIImpl.cpp -FetestJNIImpl.dll
如果大家对VC很熟悉的话,可以用VC建立一个空的win32 Dynamic Link library工程,然后把刚才产生的头文件包括进去,然后自己写.cpp文件。注意在tools/option下的Directories选项中include进去jdk目录下的include目录,和include目录下的win32目录,最后编译产生.dll文件。
6.将.dll文件拷贝到工程的目录下,注意要把当前工程的目录设到PATH里边去,要不运行会出错误。
或者将.dll文件拷贝到PATH的路径下,比如 jdk/bin目录下,运行就可以了
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12443821/viewspace-769/,如需转载,请注明出处,否则将追究法律责任。