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 ;
}这几个方法----
--------------------------------
------------------------------
这已经成功。
















