-1

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

我的 java 类是 RTSPClientActivity.java 和 .cpp 文件是 testRTSPClient.cpp

以下是我在 .cpp 文件中制作的方法

无效 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

你必须改变

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 回答
0

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

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

javah -jni com.mypackage.myclass
于 2013-03-06T15:00:48.593 回答