Androi NDK生成 找不到对应的C的函数异常

54 篇文章 0 订阅
46 篇文章 0 订阅

前两天一直遇到个问题,就是用javah 生成的头文件,

用NDK编译后提示,找不到对应的接口,很奇怪的问题。

 

因为之前我用的是范例中的代码,直接按扎代码格斯copy了相应接口编译,没有问题。

可是当自己用javah生成,却不能够使用。

 

后来对比了生成的代码和自己手写的代码的区别,发现自动成的的接口是这样的:

JNIEXPORT jlong JNICALL Java_org_opencv_samples_XXX_nativeXXX
  (JNIEnv *, jclass, jlong, jobject);

而手写的是:

JNIEXPORT jlong JNICALL Java_org_opencv_samples_XXX_nativeXXX

  (JNIEnv *, jclass, jlong, jlong);

定位到是这个导致的问题。

结论:如果在java中使用的是类的数据类型,使用javah就会产生一个jobject,如果使用long,对应就会生成jlong的数据类型。接口的类型不一致,自然接口就不一样。

 

后来查了下JNI对于数据类型的定义如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值