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!  所以再測試一下:

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