【发布时间】:2016-05-27 09:59:35
【问题描述】:
美好的一天。我有一个库 .so 在 x86 Android 上运行良好。 如何在 Java 中使用这个库?
System.getProperty("sun.arch.data.model").equals("32");
是的
static
{
System.loadLibrary("full/path/to/library/liblibrary.so");
}
线程“主”java.lang.UnsatisfiedLinkError 中的异常:否 java.library.path中的full/path/to/library/liblibrary.so
也许它使用了来自 Android NDK 的一些库?
【问题讨论】:
-
如果你有完整的路径,你可以使用
System.load而不是loadLibrary。您放入loadLibrary的字符串将映射到特定于平台的库名称。您可以通过调用System.mapLibraryName来查看结果。 iirc,在 linux 上,“library”将被映射到“liblibrary.so”。 -
谢谢。 System.load - 工作。但是现在出现了一个新错误:线程“main”中的异常 java.lang.UnsatisfiedLinkError: library.so: Can't load this .dll (machine code=0x34) on a AMD 64-bit platform 我也尝试在 x86 JVM Exception in线程 "main" java.lang.UnsatisfiedLinkError: library.so: Can't load this .dll (machine code=0x34) on a IA 32-bit platform
-
我无能为力...抱歉。
标签: java android android-ndk java-native-interface shared-libraries