linux下jni

创建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

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值