Android NDK java.lang.UnsatisfiedLinkError JNI

时间:2013-03-06 13:48:05

标签: java android android-ndk java-native-interface

我试图从java中的testRTSPClient.cpp调用一个方法。但我得到以下错误。 03-06 18:36:11.558:E / AndroidRuntime(6938):java.lang.UnsatisfiedLinkError:play

我的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();
    }
}

我在互联网公共汽车上看过相关问题没有答案是有用的,我无法找到我错的地方.. 感谢...

3 个答案:

答案 0 :(得分:0)

你必须改变

static native void playstream();

static native void play();

与您在cpp中定义的相同条目

答案 1 :(得分:0)

您需要在extern "C"中包装C ++函数定义。这是一个例子:

How do I prepare my .cpp files for the Android ndk to build them?

答案 2 :(得分:0)

请检查功能签名,它们在C和Java代码中应该相同。 最好的方法是使用本机函数从类创建.h文件。

在您的命令行中

转到您的项目/ bin / classes并在那里执行

javah -jni com.mypackage.myclass