3

C++ コードを使用して Android アプリを開発しています。JNI を使用しようとしましたが失敗しました。これが私のコードです:jniフォルダーのtest.cから:

jstring Segment_com_example_segment_BrowsePicture_test( JNIEnv* env, jobject thiz )
{
    return (*env)->NewStringUTF(env, "test");
}

私はすでに ndk でビルドし、libtest.so を生成しています。しかし、私のBrowsePicture.java(Segment.com.example.segmentの下)に追加しました

public native String  test();

しかし、私はそれを呼び出すことができませんでした。メッセージは次のとおりです。

E/AndroidRuntime(16748): java.lang.UnsatisfiedLinkError: Native method not found: com.example.segment.BrowsePicture.test:()Ljava/lang/String;

誰が何が悪いのか教えてもらえますか?

4

3 に答える 3

2

これでメソッド名を変更してみる...

jstring Java_com_example_segment_BrowsePicture_test( JNIEnv* env, jobject thiz )

これの代わりに...

jstring Segment_com_example_segment_BrowsePicture_test( JNIEnv* env, jobject thiz )
于 2012-10-11T11:46:23.257 に答える
1

以下のような別のクラスを宣言しましたか

package com.yourpackage;
public class NativeLib {

static {
    System.loadLibrary("yourlibrary");
}

public static native void your_function(your_arguments);
}

次に、アクティビティからこの関数を呼び出します

NativeLib.your_function(your_arguments);
于 2012-10-11T11:32:48.027 に答える
0

次の方法でライブラリをロードしましたか?

...
public class BrowsePicture {

    static {
        // assume that libtestjni.so is your lib file
        System.loadLibrary("testjni");
    }
...
于 2012-10-11T11:37:01.317 に答える