首页 > 解决方案 > Xamarin - 使用 android 原生库

问题描述

我有使用第三方 .so 库的运行良好的 Android Studio java 应用程序,我需要将其中的一部分转移到 Xamarin Forms 项目中。

java应用程序中的配置如下:

public interface dataWork
{
    int getType(byte[] bArr);
    void initialize(Object obj);
}

然后:

final class dataWorkFinal implements dataWork
{
    private final int parserType;
    private native int getType(int i, byte[] bArr);
    public native void initialize(Object obj);

    static 
    {
        System.loadLibrary("workLibrary");
    }

    dataWorkFinal (int i) { this.parserType = i; }

    public int getType(byte[] bArr) {
        return getType(this.parserType, bArr);
    }
}

然后在主要部分:

Context context = getApplicationContext();
dataWorkFinal work = new dataWorkFinal (12345);
work.initialize(context);

byte[] bDat1 = { 0x01, 0x02, 0x03}; 
int res = work.getType(bDat1);


在 Xamarin 表单 (Android) 中:

使用 DLLimport 加载 .so 库工作正常。在库中查找函数 - 好的。错误 - 调用函数时 - 致命信号 11 (SIGSEGV),代码 1

当前的 Xamarin:

[DllImport("workLibrary", EntryPoint = "getType")]
public static extern int getType(int i, int j);

....
byte[] bDat1 = new byte[] { 0x01, 0x02, 0x03};
int ms = getType( 12345, bDat1);

需要一些帮助/想法如何解决它?

标签: androidxamarinnative

解决方案


推荐阅读