日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

so调用报错 java.lang.UnsatisfiedLinkError: No implementation found for ...

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 so调用报错 java.lang.UnsatisfiedLinkError: No implementation found for ... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做一個NDK的Android項目,需要將cpp代碼打包生成so庫。

為了方便,直接將之前的一個項目拿過來,將cpp代碼拷貝進來,修改了Android.mk文件,ndk-build成功生成so庫。

興奮~~~

小樣,不要高興太早,在下面等著你呢。。。

一調用native方法就報錯:

java.lang.UnsatisfiedLinkError: No implementation found for int com.xxx.utils.RtcmUtil.decode(byte[], int) (tried Java_com_xxx_utils_RtcmUtil_decode and Java_com_xxx_utils_RtcmUtil_decode___3BI)at com.xxx.utils.RtcmUtil.decode(Native Method)at com.xxx.location.net.ntrip.NtripClient$2.run(NtripClient.java:177)

于是,我一點點檢查,包名、方法名,一個字母、一個字母的核對。

沒有錯啊,為什么?為什么?為什么?

苦思不得其解,只能一點點摸索,嘗試。。。

在java類中從新寫一個native方法,用 javah -classpath . -jni com.xxx.utils.RtcmUtil 命令從新生成頭文件,在cpp代碼中從新實現這個新的方法,調用改方法,成功了,居然成功啦。

對比一下兩個有什么不同,發現兩個函數的參數類型不同,

有問題的參數:add(JNIEnv *env, jobject obj, jstring s)

沒問題的參數:add(JNIEnv *env, jclass obj, jstring s)

我就奇怪了,為什么之前的項目,我用的就是?add(JNIEnv *env, jobject obj, jstring s)

為什么可以調用,不會報錯呢?

有哪位大神知道是什么原因,歡迎分享討論。

總結

以上是生活随笔為你收集整理的so调用报错 java.lang.UnsatisfiedLinkError: No implementation found for ...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。