亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

第一個JNI程序--HelloNative

瀏覽:125日期:2024-07-20 08:07:05
內容: 有各種各樣的原因需要使用到已有的遺留代碼。此時,使用JNI,可以非常方便地調用已有的穩定的本地代碼。把遺留系統和新的代碼整合起來。下面我們來看如何寫一個本地C代碼調用的Hello World版本。在本實例中,包括下面幾個類:HelloNative.java:實用類,提供一個靜態本地方法greeting(),打印出一個消息串。其中greeting方法調用了下面的本地代碼。HelloNative.c:本地實現代碼。HelloNativeTest.java:應用主文件,調用HelloNative實用類的greeting()方法。HelloNative.java//HelloNative.javaclass HelloNative{ public native static void greeting(); static { //HelloNative是下面將由HelloNative.c生成的dll文件。System.loadLibrary('HelloNative'); }};編譯上面的.java文件后,在生成的.class目錄下,使用javah命令生成HelloNative.class的C頭文件:javah HelloNativeHelloNative.h生成的HelloNative.h文件如下:/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class HelloNative */#ifndef _Included_HelloNative#define _Included_HelloNative#ifdef __cplusplusextern 'C' {#endif/* * Class: HelloNative * Method: greeting * Signature: ()V */JNIEXPORT void JNICALL Java_HelloNative_greeting (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endifHelloNative.c拷貝生成的HelloNative.h,另存為HelloNative.c,并填充JNICALL Java_HelloNative_greeting方法體,得到下面的HelloNative.c:/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class HelloNative */#ifndef _Included_HelloNative#define _Included_HelloNative#ifdef __cplusplusextern 'C' {#endif/* * Class: HelloNative * Method: greeting * Signature: ()V */JNIEXPORT void JNICALL Java_HelloNative_greeting (JNIEnv * env, jclass cl){ printf('Hello, Native World!n');}#ifdef __cplusplus }#endif#endif使用Windows自帶的c/c++編譯器,編譯上面的HelloNative.c:cl -Id:j2sdk1.4.1include -Id:j2sdk1.4.1includewin32 -LD HelloNative.c -FeHelloNative.dll執行這條命令后將生成HelloNative.dll文件。這個DLL動態鏈接庫就是下面我們在HelloNative.java文件中調用的本地文件。如果是在Unix/Linux下,請使用相應操作系統的c編譯器,生成的庫文件是HelloNative.so。開始運行吧至此,我們編寫的Windows平臺上的本地庫文件和Java文件已經準備就緒,下面寫一個簡單的測試程序來測試一下本地調用吧。class HelloNativeTest { public static void main(String[] args) { HelloNative.greeting(); }}編譯、運行這個程序,將打印出Native版的:Hello, Native World!也許你認為這并沒有什么特別,但如果你知道這個消息串是使用你自己寫的C庫文件中調用生成的時候,你就會有知道這有著非常重大的意義。就好像尋寶者在人跡罕至的荒山之中,突然看到一塊史前陶片,陶片本身并沒有什么特別,但這,也許已經為你啟開了寶藏之門。from-javaresearch Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
相關文章:
主站蜘蛛池模板: 久爱www免费人成福利播放 | 久久99精品久久久久久久不卡 | 中国美女一级毛片 | 黄色工厂在线播放 | 神马啪啪 | 国产精品国产午夜免费福利看 | 国产精彩对白综合视频 | 伊人影院99 | 国产伦精品一区二区三区免费迷 | 黄色小网站在线观看 | 簧片免费网站 | 国产高清在线观看视频 | 亚洲精品国产摄像头 | 国产小视频在线播放 | 毛片毛片毛片毛片毛片毛片毛片 | 国内外成人在线视频 | 亚洲伊人精品综合在合线 | 最新国产精品视频免费看 | 22eee在线播放成人免费视频 | 亚洲欧美日韩一区高清中文字幕 | 日韩毛片欧美一级a | 一级二级三级毛片 | 性夜黄 a 爽免费看 性性影院在线观看 | 日韩免费高清视频网站 | 亚洲欧美综合乱码精品成人网 | 国产成人麻豆tv在线观看 | 农村寡妇一级毛片免费看视频 | 亚洲精品久 | 免费精品美女久久久久久久久久 | 国内精品久久久久香蕉 | 久久国产精品一国产精品金尊 | 色久综合在线 | 免费一级特黄欧美大片久久网 | 日韩一级生活片 | 日本不卡在线视频高清免费 | 好大好爽国产美女h福利视频 | 亚洲天堂h | 久久精品道一区二区三区 | 一二三区乱码一区二区三区码 | 黄视频免费| 免费看国产视频 |