2.在开发之前必须掌握java与c++技术。
3.使用开发工具 jdk myeclipse visual.
本地代码实现
1.写一个java类,使用jdk编译成.class文件,命令如下 :javac XX.java. 2.将.calss文件编译成.h文件 命令如下:javah XX类名 (在jdk中bin目录中 javah可以将java生成c++). 3.将.h文件放入c++工程中。 4.jni.h和jni_md.h文件,这2个文件在java的jdk中,include包中win32中。因为在程序中要调用,所以必须引入,如果报错就是你没有正确引入的原因。 5.java生成的.h文件引入c工程的头文件,在源文件中创建c++文件即可。
source.cpp
/* DO NOT EDIT THIS FILE - it is machine generated */ #include "..\jni.h" /* Header for class TestNative */ /*注意:这里是引入文件,就是导包*/ #ifndef _Included_TestNative #define _Included_TestNative #ifdef __cplusplus extern "C" { #endif /* * Class: TestNative * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_TestNative_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif class source { public: source(void); ~source(void); };
TestNative.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include "..\jni.h" /* Header for class TestNative */ /*注意:这里记得引入文件*/ #ifndef _Included_TestNative #define _Included_TestNative #ifdef __cplusplus extern "C" { #endif /* * Class: TestNative * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_TestNative_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif class source { public: source(void); ~source(void); };
TestNative.java
public class TestNative { public native void sayHello(); public static void main(String [] args){ //调用本地文件库“nativeCode” System.loadLibrary("nativeCode"); //创建对象 TestNative t = new TestNative(); //调用sayHello();方法,做个动作。 t. sayHello(); } } 查看c++文件库,进入debug包中,可以看到生成的NativeCode.dll文件。 将c++项目中得debug路径放入path中,这样修改文件时就能动态调试。 使用javac 命令再次调用 java的.class文件,这时候可以发现结果:c++中的HelloWorld就能正确的在java中输出。(参考附件图5)
大家注意一点: native 是声明与c++交互的一个标志,sayHello();是一个方法。
附件有参考图片,只供参考,如有问题,请留言。