国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

第一個(gè)JNI程序--HelloNative

瀏覽:103日期:2024-07-20 08:07:05
內(nèi)容: 有各種各樣的原因需要使用到已有的遺留代碼。此時(shí),使用JNI,可以非常方便地調(diào)用已有的穩(wěn)定的本地代碼。把遺留系統(tǒng)和新的代碼整合起來(lái)。下面我們來(lái)看如何寫(xiě)一個(gè)本地C代碼調(diào)用的Hello World版本。在本實(shí)例中,包括下面幾個(gè)類(lèi):HelloNative.java:實(shí)用類(lèi),提供一個(gè)靜態(tài)本地方法greeting(),打印出一個(gè)消息串。其中g(shù)reeting方法調(diào)用了下面的本地代碼。HelloNative.c:本地實(shí)現(xiàn)代碼。HelloNativeTest.java:應(yīng)用主文件,調(diào)用HelloNative實(shí)用類(lèi)的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執(zhí)行這條命令后將生成HelloNative.dll文件。這個(gè)DLL動(dòng)態(tài)鏈接庫(kù)就是下面我們?cè)贖elloNative.java文件中調(diào)用的本地文件。如果是在Unix/Linux下,請(qǐng)使用相應(yīng)操作系統(tǒng)的c編譯器,生成的庫(kù)文件是HelloNative.so。開(kāi)始運(yùn)行吧至此,我們編寫(xiě)的Windows平臺(tái)上的本地庫(kù)文件和Java文件已經(jīng)準(zhǔn)備就緒,下面寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試程序來(lái)測(cè)試一下本地調(diào)用吧。class HelloNativeTest { public static void main(String[] args) { HelloNative.greeting(); }}編譯、運(yùn)行這個(gè)程序,將打印出Native版的:Hello, Native World!也許你認(rèn)為這并沒(méi)有什么特別,但如果你知道這個(gè)消息串是使用你自己寫(xiě)的C庫(kù)文件中調(diào)用生成的時(shí)候,你就會(huì)有知道這有著非常重大的意義。就好像尋寶者在人跡罕至的荒山之中,突然看到一塊史前陶片,陶片本身并沒(méi)有什么特別,但這,也許已經(jīng)為你啟開(kāi)了寶藏之門(mén)。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
相關(guān)文章:
主站蜘蛛池模板: 国产99视频精品免费视频免里 | 一区二区三区在线免费看 | 国产欧美日韩一区 | 在线欧美国产 | 欧美视频网站在线观看 | 亚洲码一区二区三区 | 免费一级特黄特色黄大任片 | 国产精品综合一区二区 | 爆操巨乳美女 | 女人扒开腿让男人捅啪啪 | 午夜欧美成人 | 亚洲国产精品影院 | 日本欧美久久久久免费播放网 | 在线亚洲观看 | 小毛片在线观看 | 国产网站免费在线观看 | 9999久久| 久久中文字幕久久久久 | 一级啊片| 欧美日韩精品在线视频 | 在线视频亚洲一区 | 欧美一级高清黄图片 | 久久久久欧美情爱精品 | 毛片在线网站 | 搞黄网站免费看 | 最新99国产成人精品视频免费 | hdxxx色视频| 免费播放欧美毛片欧美aaaaa | 久久草在线视频 | 亚洲精美视频 | 亚洲乱码一二三四五六区 | 亚洲精品国产成人专区 | 欧美在线精品一区二区三区 | 国产精品自在自线 | 12一15女人a毛片 | 日本亚州视频在线八a | 怡红院宜春院 | 精品一区二区三区在线观看 | 久草视频在线资源 | 欧美综合图片一区二区三区 | 欧美日韩视频免费播放 |