-1

javaでtestRTSPClient.cppからメソッドを呼び出そうとしています。しかし、次のエラーが発生しています。03-06 18:36:11.558: E/AndroidRuntime(6938): java.lang.UnsatisfiedLinkError: 再生

私のJavaクラスはRTSPClientActivity.javaで、.cppファイルはtestRTSPClient.cppです

以下は、.cppファイルで作成した方法です

void Java_my_pakg_RTSPClientActivity_play(JNIEnv *env, jobject obj) { ... }

public class RTSPClientActivity extends Activity {
    static {
        try

        {
            System.loadLibrary("testRtspClient");
        } catch (Throwable e) {
            throw new RuntimeException(e);
        }
    }

    static native void playstream();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rtsp_layout);
        play();
    }
}

インターネットバスで関連する質問を見たことがありますが、答えは役に立ちませんでした。どこが間違っているのかを見つけることができません..ありがとう...

4

3 に答える 3

0

関数の署名を確認してください。CコードとJavaコードで同じである必要があります。最良の方法は、ネイティブ関数を使用してクラスから.hファイルを作成することです。

コマンドライン内でプロジェクト/ビン/クラスに移動し、そこで実行します

javah -jni com.mypackage.myclass
于 2013-03-06T15:00:48.593 に答える
0

あなたは変わらなければならない

static native void playstream();

static native void play();

cpp で定義した同じエントリとして

于 2013-03-06T14:52:04.577 に答える
0

C++ 関数定義を でラップする必要がありますextern "C"。次に例を示します。

Android ndk でビルドするために .cpp ファイルを準備するにはどうすればよいですか?

于 2013-03-06T14:56:26.383 に答える