开发者社区> 问答> 正文

Android NDK 中C/C++ 代码 Native method not ?报错

博客原地址:

http://blog.sina.com.cn/s/blog_4868f98601017r6g.html


 NDK下面的 C++代码 无法被JAVA识别:

 执行的过程中报错: 

java.lang.UnsatisfiedLinkError: Native method not found:


经过排查发现是两个问题:
1) Android.mk里面:
最后生成的时候
  LOCAL_MODULE := testcmmb_jni   千万不能写成 libtestcmmb_jni!!!!虽然编译出来的文件名称貌似相同

2) C++ 的代码里面:
extern "C"{ 
。。。
}
这是因为生成的二进制文件中,C和C++的符号表不相同造成的。Jni是按照C的生成规则去找函数的, 所以要加上extern C使编译器把函数按照C的规则编译 这样才能被JAVA调用



展开
收起
爱吃鱼的程序员 2020-06-22 19:50:35 647 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    第二个问题可以通过命令直接生成头文件至于第一个方法名必须一致好的多谢!我也遇到过这种情况,就是发现修改了,我调用其他已经写好的库时,头文件不可以写在cpp里面。如果写在cpp里面的话,也会提示找不到对应的接口。我用nm命令来查看的时候还是能看到有定义的函。我就不知道这是为什么的呢。

    2020-06-22 19:50:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载