JNI 入門教程
1.編寫java測試類
2.利用java測試類生成C標頭檔案(我沒有C和C++基礎,後面出現的非JAVA的程式碼具體是C還是C++,我也不清楚。所以,教程中我都把它稱為C)
3.利用C標頭檔案編寫C程式碼
4.生成C庫
5.java呼叫測試
第一步:編寫java測試類
程式碼如下:
package com.aijiao.test; public class JNIDemo { //定義一個方法,該方法在C中實現 public
com.aijiao.test; public class JNIDemo { //定義一個方法,該方法在C中實現 public native void testHello();native void testHello(); public static void main(String[] args){ //載入C檔案 System.loadLibrary("TestJNI"); JNIDemojniDemo = new JNIDemo(); jniDemo.testHello(); } }public static void main(String[] args){ //載入C檔案 System.loadLibrary("TestJNI"); JNIDemo jniDemo = new JNIDemo(); jniDemo.testHello(); } }
第二步:利用java類生成C標頭檔案
生成命令如下:
javah -classpath . -jni com.aijiao.test.JNIDemo
-classpath . -jni com.aijiao.test.JNIDemo
該命令需要在java測試類的工程的bin目錄下執行
下圖是生成的標頭檔案
第三步:用visual studio編寫C程式碼
1.選擇檔案-》新建-》專案
2.選擇(Win32),輸入專案名稱,專案地址,點選確定。
3.直接點選下一步
4.這裡選擇DLL,空專案,然後點完成。
5.生成如下如的專案結構
6.在原始檔的資料夾上面右鍵,選擇新增-》類。
7.直接點選新增
8.輸入類名,點選完成。(C++類)
9.在你的JDK目錄的include目錄下有一個jni.h的檔案,include的win32目錄下有個jni_md.h檔案,還有java工程的bin目錄下的C標頭檔案,一起拷貝到C工程的TestJNI目錄下:(當前工程名就叫TestJNI,工程目錄下還有一個TestJNI目錄,工程目錄-》TestJNI-》jni.h com_aijiao_test_JNIDemo.h jni_md.h)如下圖:
當前目錄為工程目錄
拷貝過來的jni.h,com_aijiao_test_JNIDemo.h和jni_md.h
10.在C專案的標頭檔案資料夾上面右鍵,新增-》現有項
11.選擇jni.h,com_aijiao_test_JNIDemo.h和jni_md.h
12.開啟com_aijiao_test_JNIDemo.h檔案
13.將#include <jni.h>修改為#include "jni.h",錯誤提示消失。
14.在TestJNI.cpp檔案中寫入如下程式碼:
程式碼:
#include "com_aijiao_test_JNIDemo.h"
#include <iostream>
#include <stdio.h>
JNIEXPORT void JNICALL Java_com_aijiao_test_JNIDemo_testHello
(JNIEnv *, jobject) {
printf("this is C++ print");
}
"com_aijiao_test_JNIDemo.h"
#include <iostream>
#include <stdio.h>
JNIEXPORT void JNICALL Java_com_aijiao_test_JNIDemo_testHello
(JNIEnv *, jobject) {
printf("this is C++ print");
}
15.配置C工程,在解決方案上右鍵,選擇屬性
16.做如下配置
第四步:在專案上右鍵生成,輸出如下下資訊
下面是生成的dll庫
第五步:在Java專案下如下設定
填寫dll庫所在路徑(不需要帶檔名),儲存即可。
執行java類,結果入下。
作者: aijiao
Email: [email protected]
地址: https://my.oschina.net/aijiaoer0624/blog/1142876