1.JAVA中使用JNI調用C++代碼學習筆記


                                 Java 之JNI編程
1.什么是JNI?

   JNI:(Java Natibe Inetrface)縮寫。

2.為什么要學習JNI?
 Java 是跨平台的語言,但是在有些時候仍然是有需要調用本地代碼

(這些代碼通常是由C/C++編寫的).

Sun公司提供的JNI是Java平台的一個功能強大的接口。
這個JNI接口提供了Java與操作系統本地代碼互相調用的功能。(即java調用C++代碼)

最簡單的Java調用C/C++代碼步驟

1.創建TestNativeCode工程,新建cn.itcast包,新建class類TestNative。

2.在java類中聲明一個native的方法。

TestNative.java代碼如下:

package cn.itcast;

public class TestNative {
    
    //使用JAVAH命令生成包含native方法定義的C/C++頭文件。
    //該命令需要使用JDK/bin目錄下javah.exe
    public native void sayHello();

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }
}

3.使用Javah命令生成包含native方法定義的C/C++頭文件,

編譯生成 cn_itcast_TestNative.h

具體方法如下:

                  進入cmd命令提示符下執行下列命令:

cd E:

cd E:\Workspaces\MyEclipse 8.5\TestNativeCode\src

javah cn.itcast.TestNative

4.打開vs2008,其他語言——Visuall C++——Win32——Win32控制台應用程序——名稱:nativeCode——確定。

如圖所示:

5.在彈出對話框中選擇應用程序設置——DLL——空項目

如圖所示:

6.將 cn_itcast_TestNative.h移動到新建的工程目錄下。

7.選中頭文件目錄——右鍵——添加現有項——瀏覽添加cn_itcast_TestNative.h
8.選中源文件——右鍵添加——新建項——C++文件(.cpp)——source.cpp——添加.

source.cpp源碼如下:

#include"cn_itcast_TestNative.h"
#include<iostream>
using namespace std;
JNIEXPORT void JNICALL Java_cn_itcast_TestNative_sayHello(JNIEnv * env, jobject obj)
{
    cout<<"Hello word!"<<endl;
}

9.復制jni.h、jni_md.h到項目下,選中頭文件目錄—右鍵—添加現有項—添加這兩個。

注意:

jni.hD:\Program Files\Java\jdk1.7.0_01\include目錄下,

jni_md.hD:\Program Files\Java\jdk1.7.0_01\include\win32目錄下

10.將C/C++源文件編譯成動態鏈接庫(DLL)

11.把DLL文件加入到path環境下,XP下我的電腦——右鍵屬性——高級——環境變量

path:添加D:\test\nativeCode\Debug

12.Java類中加載DLL,然后調用生命的native方法。

TestNative.java代碼修改如下:

package cn.itcast;

public class TestNative {
    
    //使用JAVAH命令生成包含native方法定義的C/C++頭文件。
    //該命令需要使用JDK/bin目錄下javah.exe
    public native void sayHello();

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.loadLibrary("nativeCode");
        TestNative tst=new TestNative();
        tst.sayHello();

    }

}

13.關閉myclipse8.5軟件,重新打開,否則會報錯。

因為myclipse每次啟動會讀一遍系統變量,剛修改后需要重新讀取,所以要重啟軟件。

14.再次打開軟件運行,就可以看到調用了我們在c++中寫的Hello word代碼了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM