创建java程序hello.java:
public class hello {
static{
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("hello");
}
public hello(){
}
public native void sayHello(String name);
public static void main(String argv[])
{
hello interfaceHello = new hello();
interfaceHello.sayHello("FengXinZiYang");
}
}
执行命令:
javac hello.java //生成hello.class
javah hello //生成jni文件 hello.h
创建cpp程序hello.cpp:
#include <iostream.h>
#include "hello.h"
JNIEXPORT void JNICALL Java_hello_sayHello
(JNIEnv * env, jobject obj, jstring name)
{
const char* pname = env->GetStringUTFChars(name, NULL);
cout << "Hello, " << pname << endl;
}
生成.so文件:
g++ -I /usr/lib/jvm/java-1.5.0-sun-1.5.0.22/include/linux/ -I /usr/lib/jvm/java-1.5.0-sun-1.5.0.22/include/ -fPIC -c hello.cpp //包含jdk路径,生成hello.o文件
g++ -shared -o libhello.so hello.o //生成.so文件
执行可执行程序,测试
javac hello.java
java hello
执行结果:Hello, FengXinZiYang
参考网页:
http://edu.codepub.com/2010/0804/24819.php