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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

android ndk程序UnsatisfiedLinkError解决方案

發布時間:2025/3/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android ndk程序UnsatisfiedLinkError解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?1.UnsatisfiedlinkError:dll名稱。說明dll沒有放到合適的位置。對于Android開發,我們一般把so放在libs目錄下,但是還是會出現這個錯誤。根本原因System.loadLibrary函數會加載你指定的so,該so中需要鏈接的所有符號都需要能夠鏈接到,如果有一個鏈接不成功,那么整個so也會加載失敗。仔細檢查so中需要的所有符號,確保其存在且在正確的位置上。
???2.UnsatisfiedlinkError:方法名稱。說明dll已經成功加載,但是方法名字錯了。這個錯誤最最常見而且基本的解決方法是:仔細對比你的native 方法的原型確保與javah生成的原型一致。在java端修改native方法名稱一定要記得更新c/c++端的函數名稱,這是造成此類錯誤最常見的原因。
???3.JNI是采用了C風格的函數命名,所以如果用C++編譯,則必須記得在每個函數前加上extern "C"的標記。
???4.local/global reference這些概念,只是跟jobject的指針相關(包括它的派生類如jclass),因為這些指針所指空間,如果為local的話,則會在作用域結束時被回收,所以做cache時才需要轉化為global reference。

而jfieldID和jmethodID查看頭文件便可知與jobject無關,只是一些native的空間分配,因此與local/global這些JNI加入的新概念無關,按C/C++的做法去cache即可。

??5.GetStringRegion和GetStringUTFRegion的特別提醒

這兩個函數都有一個len的參數,表示Unicode字符的個數,但是要注意,這兩個函數會在copy完字符串后,還會操作數組的第len+1個元素(GetStringUTFRegion會把[len+1]賦值為0,但是GetStringRegion很奇怪,并不會把[len+1]賦為0)!因此分配空間時就要分配len+1,否則嘛。。你的程序隨時crash(當你執行delete[]時)

轉載于:https://www.cnblogs.com/chenlong-50954265/p/5000019.html

總結

以上是生活随笔為你收集整理的android ndk程序UnsatisfiedLinkError解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

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