Android NDK 中C/C++ 代码 Native method not found 问题

小石头子子 发布于 2013/04/28 14:38
阅读 18K+
收藏 1

博客原地址:

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


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

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

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



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