我成功地使用android ndk-Standalone工具链交叉编译了一个c++库,然后在Eclipse中创建了一个新的android应用程序项目,当我将mylib.so放入jni文件夹并执行ndk-build命令时,它工作得很好
Prebuilt : mylib.so <= jni/
Install : mylib.so => libs/armeabi/mylib.so但在添加
static{
System.load("/data/data/my_package/lib/mylib.so");
}我在logcat中发现了一个错误
AndroidRuntime
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library:
reloc_library[1306]: 36 cannot locate 'xmlCleanupParser'...``我用谷歌搜索了一下,但没有找到任何解决这个问题的方法。
发布于 2014-10-15 18:52:50
我最近遇到了同样的错误。在尝试了许多来自SO的建议后,我最终发现错误存在于我的本机代码中。,尽管android ndk已经编译了它,但没有任何问题/警告。
尝试编写一个简单的main函数来测试您的本机代码,并使用g++/gcc (或类似的工具)进行编译以检查错误。
我知道对于提问者来说为时已晚,但希望其他人能发现这一点。
发布于 2013-09-28 16:00:46
人们大多忘记了从库名称中剪切"lib“前缀。所以如果你有"libusb.so“,你的代码必须是System.loadLibrary("usb")...
发布于 2013-03-04 23:16:22
如果您的lib/-directory中有已编译的本机库( .so-file),则可以在不使用完整路径的情况下引用它:
static{
System.load("mylib");
}如tutorial所示。
检查是否在头文件中设置了正确的包:How to resolve the java.lang.UnsatisfiedLinkError in NDK in Android?
https://stackoverflow.com/questions/15204492
复制相似问题