私はすでに何週間もこれに固執しています。
私はAndroidトレントクライアントで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