我使用android-ndk编译了我的c源文件,然后将.so文件放在我的android项目的libs文件夹中,但是当我调用本机函数时,我有一个“没有找到本机的实现”错误。 如果我尝试从adb shell中调用这个函数,一切正常,所以我不明白为什么会出现这个错误。 请帮忙, Andrea未找到本机实现
Q
未找到本机实现
5
A
回答
14
有一个确切的命名方案涉及JNI,这不是很明显。也许你的功能实现不符合它?例如,如果您希望能够从您的JAVA代码中调用一个名为startServer的本机函数,假设您的包名为com.example.something,并且您的类名为MyClass,那么您应该在您的函数中有一个成员函数JAVA类,像这样:
private native void startServer();
然后你的JNI的实现应该是这样的:
JNIEXPORT void Java_com_example_something_MyClass_startServer(JNIEnv *env, jobject obj) {
// Do something here...
}
否则,有一个链接错误。
12
你可以得到这个还有一个原因,就是如果当时没有叫你的图书馆,你正在一个JNI函数调用:
static {
System.loadLibrary("myJNIFILE");
}
应地方实际参照JNI函数之前被调用。
+0
你是完全正确的!我有一个可以正常工作的应用程序,但我添加了额外的初始屏幕(视图)和应用程序崩溃(我有一个JNI警告,抱怨找不到“本机”方法)。最后我移动了电话号码:\t static { \t \t System.loadLibrary(“mylibrary”); \t}负责启动应用程序的活动。 – Genar 2014-07-24 10:57:49
相关问题
- 1. Android。未找到KeyFactory RSA实现
- 2. MVC2 - 未找到自定义MembershipProvider实现
- 3. java.lang.UnsatisfiedLinkError中:本机方法未找到
- 4. 我在哪里可以找到Java本机方法实现?
- 5. 未找到Android本机库没有找到
- 6. 路径'...'的控制器未找到或未实现IController
- 7. 路径控制器...未找到或未实现IController
- 8. 机器人ContextCompat.checkSelfPermission()未找到
- 9. Eclipse未找到手机
- 10. 未找到发现接口
- 11. 现场未找到:“Microsoft.CommerceServer.Catalog.Internal.Constants.CatalogResourceMajorVersion”
- 12. EasyNetQ现场未找到 'RabbitMQ.Client.ConnectionFactory.AutomaticRecoveryEnabled'
- 13. 找到实现接口
- 14. 找不到实现类:“cassandra”
- 15. 如何在JTextPane中实现查找文本机制?
- 16. 基本随机到循环的基本实现
- 17. 版本未找到:[email protected]
- 18. 版本`libmysqlclient_20.0' 未找到
- 19. 脚本“index.phtml”未找到
- 20. NetBeans未找到JasperReports脚本
- 21. 未找到Hazelcast CompleteConfiguration类的JCache实现中的错误
- 22. 连接时发生Android SSHJ异常() - “KeyFactory ECDSA实现未找到”
- 23. 使用Sozfo TinyMCE解决方案实现Sofzo_From未找到错误
- 24. java.lang.UnsatisfiedLinkError:未找到与void包名称相关的实现方法
- 25. iPhone/iPad增强现实lib3DAR CMMotionManager符号未找到错误
- 26. 制作一个嵌入JNI的Android库:未找到实现
- 27. 类未找到扩展实现了接口在PHP
- 28. 可运行JAR文件:实现“org.apache.hadoop.util.Tool”的类未找到
- 29. 如何在scala.concurrent中找到未来的实现?
- 30. 类未找到撒克逊分析器实现的例外
我的软件包是:package upmt.os;和函数:public static native String upmtconf(String [] param);在Module类中。在c代码中,实现是JNIEXPORT jstring JNICALL Java_upmt_os_Module_upmtconf(JNIEnv * env,jobject obj,jobjectArray param) – 2011-05-23 11:49:01
发布logcat输出以调用您的函数 - 它具有链接器正在查找的确切名称。如果你有某种错字,这是一个很好的方法来捕捉它。 – gby 2011-05-23 13:34:20
我解决了它。这只是一个定义的makefile中的错误。无论如何感谢 – 2011-05-24 09:17:10