linux jni java,Linux下Java JNI调用动态链接库

JNI就是在Java中调用非java代码,如果看到native声明的方法,肯定是有jni调用的,其实现是由其他语言写的程序,常用的是c,c++。

1 首先创建一个简单的java类:

Java代码

public class Hello

{

static

{

try

{

//此处即为本地方法所在链接库名

System.loadLibrary("hello");

}

catch(UnsatisfiedLinkError e)

{

System.err.println( "Cannot load hello library:\n " +

e.toString() );

}

}

public Hello()

{

}

//声明的本地方法

public native void SayHello(String strName);

}

2 生成 Hello.h

javac Hello.java生成class文件

javah Hello生成hello.h

这个头文件就是根据了jni的规则来生成了native方法在c/c++的声明。下一步就需要新建c/c++文件来实现这里面的方法

3 在与Hello.h相同的路径下创建一个CPP文件Hello.cpp

C++代码

#include "Hello.h"

JNIEXPORT void JNICALL Java_Hello_SayHello  (JNIEnv * env, jobject arg, jstring instring)

{

const char *str = env->GetStringUTFChars( instring, JNI_FALSE );

printf("Hello,%s\n",str);

env->ReleaseStringUTFChars( instring, str );

return;

}0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值