java中如何调用c/c++代码

Java某些时候需调用本地c/c++代码,Sun公司提供的JNI是java平台一个功能强大的接口,该接口提供了java与操作系统本地代码互相调用的功能
最简单的java调用c/c++代码步骤:
在java类中声明一个native的方法(native表其具体代码由本地c/c++实现)
使用javah命令生成包含native方法的c/c++头文件
javah -help
按照生成的头文件编写c/c++源代码(生成dll动态链接库工程、添加头文件)
将c/c++源文件编译为dll(与exe类似,为可执行二进制代码)
把dll文件加入到path环境变量下
java类中加载dll,然后调用native方法

操作:
public class Test {
public native void sayHello();
public static void main(String[] args) {
System.loadLibrary(" cppTest ");
Test test=new Test();
test.sayHello();
}
}

K:\>cd K:\files\workspace\Test\src //源码Test.java所在目录
K:\files\workspace\Test\src>javah Test //生成Test.h

#include
#include "Test.h" 
using namespace std;
JNIEXPORT void JNICALL Java_Test_sayHello(JNIEnv *env, jobject obj)
{
cout<<"hello world"<
}
//编译生成 cppTest.dll ,编译过程中所需jni.h等头文件从jdk目录拷贝
//path修改后需重启eclipse

使用JNI的两个弊端:
使用了JNI,该APP将不能再跨平台,如移植到别的平台,native代码需重新编写
java是强类型语言,而c/c++非,故在写JNI时需小心
总之,构建java程序时,尽量少用本地代码

你可能感兴趣的:(Java相关,java,c++,操作系统,sun公司)