调用本机函数时出现UnsatisfiedLinkError

时间:2012-12-13 09:15:11

标签: android android-ndk java-native-interface shared-libraries unsatisfiedlinkerror

我可以使用System.loadLibrary("")成功加载本机库,但是当我从该库调用本机方法时,我收到UnsatisfiedLinkError,找不到该方法的实现。

但是这段代码可以在另一个应用程序中运行,不管怎样我的不是。

2 个答案:

答案 0 :(得分:3)

您是否更改了jni方法中的packageName,它应该是Java_com_example_yourapp_methodname(JNIEnv * env, jobject thiz),其中com_example_yourapp是您调用该方法的类的包的引用。 之后,你又打电话给ndk-build吗?

答案 1 :(得分:1)

建议使用Erik N方法,但由于VM需要使用上述签名搜索函数调用,因此会对性能产生一些影响。相反,您可以使用签名映射函数并在JNI_OnLoad()函数调用上注册它们。

http://docs.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html#wp5833