【JAVA跨语言调用C++程序的小实验】

JAVA 调用C++步骤如下:

1) 首先在java类中声明native方法

2) 使用javah 命令生成包含native方法声明的C/C++头文件

3) 按照生成的C/C++头文件开始编写C/C++源文件

4) C/C++源文件编译为动态链接库(DLL

5) DLL文件加入到项目的ClassPath中去

6) JAVA类中调用加载DLL,然后调用声明的native方法

 

实验过程如下:

1)开发native方法



 

2)编译生成C++头文件

 

 

3)开发C++程序,编译生成DLL文件


 

 

4)java程序调用动态链接库,输出结果


 

 

实验错误处理



 

 

程序源码如下:

C++部分

#include<iostream.h>

#include "DemoJAVA.h"

 

JNIEXPORT void JNICALL Java_DemoJAVA_sayHello

(JNIEnv *, jobject){

cout<<"Hello,C++"<<endl;

cout<<"My Name is:gaojingsong"<<endl;

cout<<"This is C++ Program"<<endl;

}

 

/*

 * Class:     DemoJAVA

 * Method:    add

 * Signature: (II)I

 */

JNIEXPORT jint JNICALL Java_DemoJAVA_add

(JNIEnv *, jobject, jint a, jint b){

int res = a +b;

    cout<<"begin user C to add"<<endl;

    cout<<"Param1:"<<a<<" , Param2:"<<b<<endl;

cout<<"Result:"<<res<<endl;

return res;

}

 

 

JAVA部分:

 

public class DemoJAVA {

 

public native void sayHello();

public native int add(int a,int b);

/**

* @param args

*/

public static void main(String[] args) {

DemoJAVA demo = new DemoJAVA();

//System.load("C:/maven_workspace/tt/target/classes/DemoC.dll");

 

Runtime.getRuntime().load("C:/maven_workspace/tt/target/classes/DemoC.dll");

 

 

demo.sayHello();

demo.add(1, 999);

}

 

}

 

猜你喜欢

转载自gaojingsong.iteye.com/blog/2317392