奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語(yǔ)言

Java程序調(diào)用C/C++語(yǔ)言函數(shù)的方法

時(shí)間:2025-05-05 14:37:57 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

Java程序調(diào)用C/C++語(yǔ)言函數(shù)的方法

  導(dǎo)語(yǔ):Java提供了完備的C/C++語(yǔ)言接口,這樣我們可以利用C語(yǔ)言的強(qiáng)大功能實(shí)現(xiàn)Java難以實(shí)現(xiàn)的功能,在一定程序上消除Java的局限性和低效率。 下面就由小編為大家介紹一下Java程序調(diào)用C/C++語(yǔ)言函數(shù)的方法,歡迎大家閱讀!

  一、創(chuàng)建DLL文件

  使用某一種C/C++開(kāi)發(fā)工具創(chuàng)建Dll文件,實(shí)現(xiàn)某一功能,供JAVA調(diào)用,例如本文在此使用Visual studio 2005創(chuàng)建一個(gè)名為testdll的動(dòng)態(tài)庫(kù)文件。

  二、使用JNI

  JNI是Java Native Interface的縮寫(xiě),中文為JAVA本地調(diào)用。它允許Java代碼和其他語(yǔ)言寫(xiě)的代碼進(jìn)行交互。

  1.JAVA類(lèi)

  在JAVA程序中,首先需要在類(lèi)中聲明所調(diào)用的庫(kù)名稱,如下:

  static {

  System.loadLibrary(“testdll”); //加載動(dòng)態(tài)庫(kù),testdll為DLL文件名稱

  }

  還需要對(duì)將要調(diào)用的方法做本地聲明,關(guān)鍵字為native。并且只需要聲明,而不需要具體實(shí)現(xiàn)。如下:

  public native static void set(int i);

  public native static int get();

  然后編譯該JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就會(huì)生成C/C++的頭文件。

  例如程序testdll.java,內(nèi)容為:

  public class testdll { static { System.loadLibrary(“testdll”); } public native static int get(); public native static void set(int i); public static void main(String[] args) { testdll test = new testdll(); test.set(10); System.out.println(test.get()); } }

  用javac testdll.java編譯它,會(huì)生成testdll.class。

  再用javah testdll,則會(huì)在當(dāng)前目錄下生成testdll.h文件,這個(gè)文件需要被C/C++程序調(diào)用來(lái)生成所需的庫(kù)文件。

  2.C/C++

  創(chuàng)建C/C++項(xiàng)目需要增加的頭文件有jni.h、jni_md.h這兩個(gè)文件是JNI中必須的;還有就是增加testdll.h。

  對(duì)于已生成的.h頭文件,C/C++所需要做的,就是把它的各個(gè)方法具體的實(shí)現(xiàn)。然后編譯連接成庫(kù)文件即可。再把庫(kù)文件拷貝到JAVA程序的路徑下面,就可以用JAVA調(diào)用C/C++所實(shí)現(xiàn)的功能了。

  接上例子。我們先看一下testdll.h文件的內(nèi)容:

  #include #ifndef _Included_testdll #define _Included_testdll #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass); JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint); #ifdef __cplusplus } #endif #endif

  在具體實(shí)現(xiàn)的時(shí)候,我們只關(guān)心兩個(gè)函數(shù)原型 JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass);和 JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint);這里JNIEXPORT和JNICALL都是JNI的關(guān)鍵字,表示此函數(shù)是要被JNI調(diào)用的。而jint是以JNI為中介使JAVA的int類(lèi)型與本地的int溝通的一種類(lèi)型,我們可以視而不見(jiàn),就當(dāng)做int使用。函數(shù)的名稱是JAVA_再加上java程序的package路徑再加函數(shù)名組成的。參數(shù)中,我們也只需要關(guān)心在JAVA程序中存在的參數(shù),至于JNIEnv*和jclass我們一般沒(méi)有必要去碰它。

  下面我們用testdll.cpp文件具體實(shí)現(xiàn)這兩個(gè)函數(shù):#include "testdll.h" int i = 0; JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) { return i; } JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) { i = j+5; }

  編譯連接成庫(kù)文件,這里就是testdll.dll。把testdll.dll拷貝到testdll.class的目錄下,java testdll運(yùn)行它,就可以觀察到結(jié)果了。

  三、總結(jié)

  使用JNI可以在JAVA中調(diào)用其它語(yǔ)言編寫(xiě)的代碼,在一定程度上消除JAVA的局限性和低效率。


【Java程序調(diào)用C/C++語(yǔ)言函數(shù)的方法】相關(guān)文章:

Java程序如何調(diào)用C/C++語(yǔ)言函數(shù)03-25

C++調(diào)用C函數(shù)的方法05-21

C/C++函數(shù)調(diào)用的方式07-29

java調(diào)用c函數(shù)的實(shí)例04-25

C++如何調(diào)用matlab函數(shù)06-29

c語(yǔ)言調(diào)用函數(shù)的使用方法05-13

C/C++函數(shù)調(diào)用的方式有哪些06-23

如何在C/C++中調(diào)用Java03-13

C語(yǔ)言函數(shù)的運(yùn)用及調(diào)用05-10

主站蜘蛛池模板: 昭通市| 安龙县| 乐平市| 邯郸县| 台东县| 阆中市| 和田县| 邵阳县| 达州市| 板桥市| 临江市| 昌邑市| 肇庆市| 钦州市| 达州市| 衡东县| 潮安县| 合江县| 青神县| 滕州市| 文水县| 西青区| 滦南县| 大化| 靖远县| 牟定县| 普宁市| 乐安县| 建阳市| 乌拉特前旗| 贺州市| 浮梁县| 八宿县| 封开县| 海淀区| 乡宁县| 旺苍县| 金门县| 二连浩特市| 琼结县| 霍山县|