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);
}
}