android静态库错误的ELF号

ste*_*one 1 static android numbers elf

我已经使用Android ndk建立了一个静态库。

我现在尝试在另一个Android项目中使用此库

//in mainActivity
static
{
    System.loadLibrary("MILlib");
}
Run Code Online (Sandbox Code Playgroud)

构建测试项目时出现以下错误

02 17:07:24.890 2785-2785 / com.MIL.testlib E / AndroidRuntime:致命异常:主进程:com.MIL.testlib,PID:2785 java.lang.UnsatisfiedLinkError:dlopen失败:“ / data / app / com “ .MIL.testlib-1 / lib / arm / libMILlib.so”在java.lang.System.loadLibrary(System.java:989)处的java.lang.Runtime.loadLibrary(Runtime.java:371)处具有不良的ELF魔术com.MIL.testlib.MainActivity。(MainActivity.java:112),位于java.lang.reflect.Constructor。android.app.Instrumentation.newActivity(Instrumentation.java:1079)的java.lang.Class.newInstance(Class.java:1650)的newInstance(本机方法)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2640)的java.lang.Class.newInstance(Class.java:1650)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java :)在android.app.ActivityThread.access $ 900(ActivityThread.java:181)在android.app.ActivityThread.access $ 900(ActivityThread.java:181)1482)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:145)在android.app.ActivityThread.main(ActivityThread.java:6145)在java。 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399)处java.lang.reflect.Method.invoke(Method.java:372)处的lang.reflect.Method.invoke(本机方法) com.android.internal。os.ZygoteInit.main(ZygoteInit.java:1194)

什么是不良的ELF魔术数,如何解决?

Rob*_*lle 5

.so对象是共享对象文件。这是本机代码,而不是Java库,ELF因为它采用可扩展链接格式,所以被称为an 。

“魔术”是指ELF文件的前64位。这指定了一些标头信息,包括为其构建的系统的体系结构。

Android手机支持三种架构:ARM,Intel和MIPS。仿真器支持它们运行的​​硬件,通常是Intel。考虑到您.so的目录路径中有“ arm”,我怀疑您.so是ARM,.so并且您正在尝试在Intel或MIPS上运行它。