java 調用c/c++ java
第一步: c++
編寫java程序:如-- 函數
public class Pxy { spa
static{ 開發
//加載動態庫 字符串
System.loadLibrary("pxy"); get
} cmd
//此方法不用再java中實現 string
//這裏定義的函數咱們是但願它能 it
//在C++中運行--提升程序的效率
// 方法set 是初始化兩個參數
public native static void set(int a,int b);
//計算兩個參數的和
public native static int sum();
//從其餘地方返回字符串
public native static void setString(String s);
public native static void getString();
public static void main(String[] args){
Pxy p = new Pxy();
p.set(12, 9);
System.out.println("The Result is "+p.sum());
p.getString();
}
}
第二部:
建立一個c/c++的運用程序的頭文件
在本身的目錄--cmd 進行編寫
如:進到本身的類文件中(.class)
用javah 類名
編譯成功後:
第三部:
把相應的頭文件放進本身的Vc++開發環境的include包中--在後面須要用到 還有jdk 中inclue中 jni.h 和include的其餘兩個頭文件。
第四部:進行編寫c/c++項目
你能夠打開剛剛你生成的頭文件--裏面有相應的信息--如個人
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Pxy */
#ifndef _Included_Pxy
#define _Included_Pxy
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Pxy
* Method: set
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_Pxy_set
(JNIEnv *, jclass, jint, jint);
/*
* Class: Pxy
* Method: sum
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_Pxy_sum
(JNIEnv *, jclass);
/*
* Class: Pxy
* Method: setString
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_Pxy_setString
(JNIEnv *, jclass, jstring);
/*
* Class: Pxy
* Method: getString
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Pxy_getString
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
----------------------------------------
在編寫c/c++程序中--你就要根據本身的須要,把相應的函數進行實現。
如我實現了:
#include "Pxy.h"
int i=0,j=0;
JNIEXPORT void JNICALL Java_Pxy_set(JNIEnv *, jclass, jint a, jint b){
i=a;j=b;
}
JNIEXPORT jint JNICALL Java_Pxy_sum(JNIEnv *, jclass){
return i+j;
}
JNIEXPORT void JNICALL Java_Pxy_getString(JNIEnv *, jclass){
printf("\n");
printf("個人名言:風雨無阻--豔麗人生");
return ;
}
這幾個方法----
--------------------------------
------------------------------
這已經成功。