這個(gè)問題會(huì)出現(xiàn)兩種情況。
第一種是UnsatisfiedlinkError:dll名稱。說明dll沒有放到合適的位置。對(duì)于Android開發(fā),我們一般把so放在libs目錄下,但是還是會(huì)出現(xiàn)這個(gè)錯(cuò)誤。根本原因System.loadLibrary函數(shù)會(huì)加載你指定的so,該so中需要鏈接的所有符號(hào)都需要能夠鏈接到,如果有一個(gè)鏈接不成功,那么整個(gè)so也會(huì)加載失敗。仔細(xì)檢查so中需要的所有符號(hào),確保其存在且在正確的位置上。
第二種是UnsatisfiedlinkError:方法名稱。說明dll已經(jīng)成功加載,但是方法名字錯(cuò)了。這個(gè)錯(cuò)誤最最常見而且基本的解決方法是:仔細(xì)對(duì)比你的native 方法的原型確保與javah生成的原型一致。在java端修改native方法名稱一定要記得更新c/c++端的函數(shù)名稱,這是造成此類錯(cuò)誤最常見的原因。