java.lang.UnsatisfiedLinkError: Native method not found

本文深入探讨了在Android应用开发中遇到JNI方法调用错误时可能出现的原因,并提供了针对性的解决策略。主要内容包括检查Java文件是否加载了SO库、方法名称大小写匹配、C++文件的externC使用、参数传递问题以及正确的编译顺序等。通过遵循这些步骤,开发者可以有效避免和解决此类错误,确保应用的稳定运行。
摘要由CSDN通过智能技术生成

参考自:http://blog.csdn.net/lilu_leo/article/details/10950047

http://www.eoeandroid.com/thread-60793-1-1.html

出现该错误的有以下可能性:


1.java文件里面没有载入so库

static
	{
		System.loadLibrary("XXX");
	}

2.Jni方法头部大小写问题     

在C++中,方法名:Java_com_XXX,而不是java_com_XXX。建议直接从生成的.h头文件直接复制方法名到C或者C++文件中。

3.C++文件问题

        如果是C++文件(.cpp或者.cc),要使用extern "C" {   } 把本地方法括进去

4.往Jni方法中传值问题

       如,调用native方法sendSomeThing(Object object),如果传入的object为null,有可能会报上面错误

5.编译顺序不正确

     正常的操作顺序是 1 编辑c文件2 make生成so文件3 编译java文件

错误做法:先在java中添加了native方法,(这时候Eclipse给自动编译了)然后才编辑c,make,结果导致新版本的so文件没有编译进去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值