【发布时间】:2012-05-03 10:35:11
【问题描述】:
- 我有一个尝试从 Java 代码调用的 C++ 方法
-
方法的签名是:
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)
- 在运行时,System.loadLibrary("FLVCam") 成功,但调用“RunFlvServer”失败,并显示“未找到本机 Lcom/sophin/flvcam/FLVCamActivity;.RunFlvServer (I)V 的实现”
- 我使用的SDK版本是:AndroidSDK=15, NDK=r7b, minsdk@manifest = 15
- 使用 '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