我试图从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();
}
}
我在互联网公共汽车上看过相关问题没有答案是有用的,我无法找到我错的地方.. 感谢...
答案 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