Java c++ 探索

JNI (Java Native Interface)  java本地化接口,允许java连接本地机器码进行操作
             也就是java可以与咱们的C/C++ Asm 进行混合编程了!好处就是:实现java的底层相关操作
             这是java的语言的特性 迫使它没办法和才C/C++一样和硬件打交道,但是呢!!咱们有了JNI
               我们照样可以通过C/C++已经写好的本地化 代码 进行底层的操作 !
                这里我只用java写 一个与Vc写的Dll通信的类,来通过C++进行操作!其他诸如更底层的操作你自己玩把!

public class JniNative{
      public native int callNative(int x,int y);   //主要是用Native修饰的方法,此方法就是调用Win32 Dll导出的方法
     static {
           System.loadLibrary("VcDll");    //这里此类动态加载Dll可以随便写 "VcDll"代表.Dll的名字
                                                            //放在static里面就是为了创建类的对象之前就加载动态库
     }
    public static void main(String [] args){
         JniNative jni=new JniNative();

         System.out.println(jni.callNative(5,8));
     }
}


因为Java规定:public 出来的类必须要与文件名 同名,所以我保存为JniNative.java
先编译一下:javac JniNative.java         检查是否有语法错误
再做一个C++的头文件:  javah -jni JniNative   此时 只要写类名就是!

这时会生成一个 JniNative.h 的头文件,以下此图是头文件内容

你只要用VC++6新建一个Win32 Dll空工程把头添加进去,然后自己写那函数的实现
 

把编译好的Dll防到与JniNative.class文件相同的目录下,而且保证.Dll的名字为 VcDll.Dll!  所以再测试一下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章