【问题标题】:Android JNI UnsatisfiedLink ExceptionAndroid JNI UnsatisfiedLink 异常
【发布时间】:2012-05-03 10:35:11
【问题描述】:
  1. 我有一个尝试从 Java 代码调用的 C++ 方法
  2. 方法的签名是:

    • Java
      公共类 FLVCamActivity 扩展 Activity {
      静态{
      System.loadLibrary("FLVCam");
      System.out.println("加载的 FLVCam");
      }
      公共原生 void RunFlvServer(int iCamId);

    • C++:
      extern "C" JNIEXPORT void JNICALL Java_com_sophin_flvcam_FlvCamActivity_RunFlvServer(JNIEnv* env, jobject javaThis, jint iCamId)

  3. 在运行时,System.loadLibrary("FLVCam") 成功,但调用“RunFlvServer”失败,并显示“未找到本机 Lcom/sophin/flvcam/FLVCamActivity;.RunFlvServer (I)V 的实现”
  4. 我使用的SDK版本是:AndroidSDK=15, NDK=r7b, minsdk@manifest = 15
  5. 使用 'nm -g' 列出我的本机库公开的所有导出条目,很明显本机方法已正确导出:0006c0a8 T Java_com_sophin_flvcam_FlvCamActivity_RunFlvServer

    考虑到上述情况,为什么我会收到此 UnsatisfiedLink 异常?

索芬的纳达夫

【问题讨论】:

  • Java 原生函数声明是什么样子的?它应该在 com.sohin.flvcam 包中,在 FlvCamActivity 类中,如下所示:“native void RunFlvServer(int iCamId)”。
  • 函数头最好用javah命令。

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


【解决方案1】:

这是一个大写/小写的东西,FLVCamActivity 的大写是“FLV”,而 C++ 方法有“Flv”(低),我在这上面浪费了将近一天,Maan,我希望我'下次我会用我的时间来解决真正的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多