2013-03-06 85 views
-1

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

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

以下是方法I在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(); 
    } 
} 

我看到网上总线上的相关问题没有回答是有用的,我无法找到我的错.. 谢谢...

+0

的java文件代码 公共类RTSPClientActivity延伸活动{ \t静态 { 尝试 { 的System.loadLibrary ( “testRtspClient”); } catch(Throwable e) throw new RuntimeException(e); } } \t static native void playstream(); \t \t @Override \t保护无效的onCreate(捆绑savedInstanceState){ \t \t // TODO自动生成方法存根 \t \t super.onCreate(savedInstanceState); \t \t setContentView(R.layout.rtsp_layout); play(); \t \t play(); \t} } – 2013-03-06 13:50:31

+0

对不起,格式不对,在这里新的在stackoverflow ... – 2013-03-06 13:52:02

+0

你应该把代码放入问题。评论中没有格式。 – vipw 2013-03-06 14:14:30

回答

0

你必须改变

static native void playstream(); 

static native void play(); 

作为您在cpp中定义的相同条目

0

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

您的命令行中

去你的项目/斌/ classes和执行有

javah -jni com.mypackage.myclass