java 调用c/c++

java 调用c/c++

 

第一步:

编写java程序:如--

public class Pxy {

static{

//加载动态库

System.loadLibrary("pxy");

}

//此方法不用再java中实现

 //这里定义的函数我们是希望它能

//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 ;

}

这几个方法----

--------------------------------

------------------------------

这已经成功。

 

你可能感兴趣的:(java,c/c++)