我已經堅持了幾個星期了。使用本機庫時出現Android UnsatisfiedLinkError
我一直在Android的BT客戶端使用libtorrent。最近,我想添加新的功能,例如磁鐵鏈接。
所有原生函數聲明在PROJECT_FOLDER/jni/libtorrent.h
中,並在PROJECT_FOLDER/jni/libtorrent.cpp
中實現。
到目前爲止,沒有出現任何錯誤,但最近,我在libtorrent.h
添加了這個新功能:
JNIEXPORT jstring JNICALL Java_com_my_package_LibTorrent_MagnetToTorrent
(JNIEnv *env, jobject obj, jstring MagnetLink, jstring TorrentFolder);
我加入其實施libtorrent.cpp
JNIEXPORT jstring JNICALL Java_com_my_package_LibTorrent_MagnetToTorrent
(JNIEnv *env, jobject obj, jstring MagnetLink, jstring TorrentFolder) {
//function code here
}
我的代碼跑ndk-build
和它編譯。
在com.my.package.LibTorrent
類,我添加了下面的聲明,同樣的方式,我以前宣佈的其他本地方法,它工作得很好:
public native String MagnetToTorrent(String MagnetLink, String TorrentFolder);
但每當我稱呼它,我得到UnsatisfiedLinkError: MagnetToTorrent
。這真的很奇怪,因爲我之前添加了原生函數,並且它們運行良好。
任何幫助,非常感謝。謝謝。
編輯:所有在libtorrent.h
聲明的函數與extern "C" {}
這樣的包圍:
#ifdef __cplusplus
extern "C" {
#endif
/*Function declarations*/
#ifdef __cplusplus
}
#endif
三重檢查拼寫的完整包名Java_com_my_package_LibTorrent_MagnetToTorrent在.H和.cpp –
@AndrewG感謝兩個,但我已經檢查了它很多時候,我失去了計數。我認爲我現在應該看到它了,所以我懷疑是這種情況 – Gabriel