国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JNI(Java Native Interface)

2019-11-14 21:42:02
字體:
來源:轉載
供稿:網友
JNI(java Native Interface)之前按網上資料做過,但沒有成功。由于工作需要,再次使用了JNI,把大致過程錄一下。JNI:Java Native Interface(Java本地接口)的簡寫。使用這個接口,可以輕松實現java對動態鏈接庫Dynamic Link Library(dll)文件的調用,以實現一些C/C++的功能。實例:1.編寫Java類并聲明哪些函數是由動態庫實現的。
 1 public class testdll{ 2     static{ 3         System.loadLibrary("dllname");//不包含[.dll] 4     } 5  6     public native void sayHello(); 7  8     public static void main(String[] args){ 9         testdll test = new testdll();10         test.sayHello();11     }12 } 

2.生成頭文件 testdll.h

javah testdll testdll.h文件內容如下:
 1 /* DO NOT EDIT THIS FILE - it is machine generated */ 2 #include <jni.h> 3 /* Header for class testdll */ 4  5 #ifndef _Included_testdll 6 #define _Included_testdll 7 #ifdef __cplusplus 8  9 extern "C" {10 #endif11  /*12  * Class: testdll13  * Method: sayHello14  * Signature: ()I15  */16 17  JNIEXPORT void JNICALL Java_testdll_sayHello(JNIEnv *, jobject);18 #ifdef __cplusplus19 }20 #endif21 #endif

函數名有特定格式,不能隨意修改,Java_class_method,而且只能由class類對象才能調用,因為JNI是通過類名來查找對應方法的。

3.生成動態庫 使用VS新建一個空的dll工程,將生成的頭文件導入工程。新建.c或者.cpp,實現頭文件中的函數:
1 #include <stdlib.h>2 3 JNIEXPORT void JNICALL Java_testdll_sayHello4 (JNIEnv *env, jobject obj){5      

4.編譯生成dll文件

將jni.h、jni_md.h文件復制到VS環境的include目錄下 jni.h------------------jdk安裝目錄/include jni_md.h-------------jdk安裝目錄/include/win32 編譯生成testdll.dll5.執行 將編譯好的.dll文件放到path環境變量的目錄下,或者放到ecl
ipse工程的跟目錄下,然后執行Java程序即可。 也可以通過以下參數指定dll文件的目錄 java -Djava.library.path=dll文件的目錄
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清原| 江门市| 新安县| 湾仔区| 靖安县| 杭州市| 新干县| 潮安县| 闽清县| 朝阳市| 黄梅县| 珠海市| 浦县| 陆丰市| 盐亭县| 黔西县| 建始县| 栾川县| 韩城市| 平武县| 中卫市| 宁明县| 周口市| 舟山市| 湾仔区| 井陉县| 景德镇市| 迭部县| 翁源县| 泌阳县| 元谋县| 乐东| 维西| 阳春市| 阿鲁科尔沁旗| 南江县| 紫云| 方正县| 将乐县| 澄城县| 会东县|