Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复不匹配的处理器架构,意外的e_机器,由于.so文件_Java_C#_Android_Xamarin - Fatal编程技术网

Java 如何修复不匹配的处理器架构,意外的e_机器,由于.so文件

Java 如何修复不匹配的处理器架构,意外的e_机器,由于.so文件,java,c#,android,xamarin,Java,C#,Android,Xamarin,我有一个Xamarin android项目,目前正在使用Visual Studio 2015 在myMainActivity.cs中,我有以下代码: Com.Alk.Sdk.SharedLibraryLoader.LoadLibrary("alksdk", this); 然后进入: // Metadata.xml XPath method reference: path="/api/package[@name='com.alk.sdk']/class[@name='SharedLibraryL

我有一个Xamarin android项目,目前正在使用Visual Studio 2015

在myMainActivity.cs中,我有以下代码:

Com.Alk.Sdk.SharedLibraryLoader.LoadLibrary("alksdk", this);
然后进入:

// Metadata.xml XPath method reference: path="/api/package[@name='com.alk.sdk']/class[@name='SharedLibraryLoader']/method[@name='loadLibrary' and count(parameter)=2 and parameter[1][@type='java.lang.String'] and parameter[2][@type='android.content.Context']]"
        [Register ("loadLibrary", "(Ljava/lang/String;Landroid/content/Context;)Z", "")]
        public static unsafe bool LoadLibrary (string p0, global::Android.Content.Context p1)
        {
            if (id_loadLibrary_Ljava_lang_String_Landroid_content_Context_ == IntPtr.Zero)
                id_loadLibrary_Ljava_lang_String_Landroid_content_Context_ = JNIEnv.GetStaticMethodID (class_ref, "loadLibrary", "(Ljava/lang/String;Landroid/content/Context;)Z");
            IntPtr native_p0 = JNIEnv.NewString (p0);
            try {
                JValue* __args = stackalloc JValue [2];
                __args [0] = new JValue (native_p0);
                __args [1] = new JValue (p1);
                bool __ret = JNIEnv.CallStaticBooleanMethod  (class_ref, id_loadLibrary_Ljava_lang_String_Landroid_content_Context_, __args);
                return __ret;
            } finally {
                JNIEnv.DeleteLocalRef (native_p0);
            }
        }
我遇到的问题是,当它调用JNIEnv.CallStaticBooleanMethod时,会引发以下异常:

[ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.pai.rp/app_lib/libalksdk.so" has unexpected e_machine: 3
--- End of managed Java.Lang.UnsatisfiedLinkError stack trace ---
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.pai.rp/app_lib/libalksdk.so" has unexpected e_machine: 3
at java.lang.Runtime.load0(Runtime.java:908)
at java.lang.System.load(System.java:1542)
at com.alk.sdk.SharedLibraryLoader.loadLibrary(SharedLibraryLoader.java:44)
at com.pai.rp.MainActivity.n_onCreate(Native Method)
at com.pai.rp.MainActivity.onCreate(MainActivity.java:30)
at android.app.Activity.performCreate(Activity.java:6973)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3064)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
根据我的研究,我发现

  • e_machine:3表示预期的arch为Intel 80386()

  • 当使用谷歌Nexus10模拟器时,它似乎可以工作,但是当 我通过USB调试使用Galaxy Tab E(ARM),它崩溃并给我 这是一个错误


所以问题是,我该如何纠正这一点?

这是什么第三方库?@SushiHangover,我正在使用Alks副驾驶作为第三方导航系统。我得到了他们的jar文件并用itI创建了一个绑定库,我可以想象ALK对于不同的ARCH类型有不同的jar。如果你打开你的jar,它是否有多个。那么它里面有拱门吗?@SushiHangover不,事实上,我使用了一个Java反编译器,它只显示了两个类。类和SharedLibraryLoader.Class