Xamarin-使用Android本机库

时间:2019-05-29 17:47:08

标签: android xamarin native

我有一个运行良好的Android Studio Java应用程序,该应用程序使用了第三方.so库,因此我需要将其部分转移到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 Forms(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);

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

0 个答案:

没有答案