我有一个运行良好的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);
需要一些帮助/想法如何解决吗?