在Xamarin Android项目中包括java*.so库

在Xamarin Android项目中包括java*.so库,android,xamarin,shared-libraries,.so,Android,Xamarin,Shared Libraries,.so,我试图在XamarinAndroid项目中使用*.so库,就像在Java项目中使用的一样。 我尝试将库放在路径lib/armeabi/library.so和文件属性中: 构建操作:AndroidNativeLibrary 复制到输出:始终 此外,我还尝试使用以下代码导入方法,如中所述: 代码: [DllImport("libVPOS3515.so")] public extern static int Lib_McrRead(byte keyNo, byte mode, byte []t

我试图在XamarinAndroid项目中使用*.so库,就像在Java项目中使用的一样。 我尝试将库放在路径lib/armeabi/library.so和文件属性中:

  • 构建操作:AndroidNativeLibrary
  • 复制到输出:始终
此外,我还尝试使用以下代码导入方法,如中所述:

代码:

[DllImport("libVPOS3515.so")] 
public extern static int Lib_McrRead(byte keyNo, byte mode, byte []track1, byte []track2, byte []track3);

但是,如何使用库中包含的类呢?

如果您的DllImport是:

byte keyNo = {?};
byte mode = {?};
byte[] track1 = {?};
byte[] track2 = {?};
byte[] track3 = {?};
int retValue = Lib_McrRead(keyNo, mode, track1, track2, track3);
公共外部静态intlib_McrRead(字节键号,字节模式,字节[]track1,字节[]track2,字节[]track3)

类似这样的内容:

byte keyNo = {?};
byte mode = {?};
byte[] track1 = {?};
byte[] track2 = {?};
byte[] track3 = {?};
int retValue = Lib_McrRead(keyNo, mode, track1, track2, track3);

(当然,我不知道参数的值应该是什么…

如果您的DllImport是:

byte keyNo = {?};
byte mode = {?};
byte[] track1 = {?};
byte[] track2 = {?};
byte[] track3 = {?};
int retValue = Lib_McrRead(keyNo, mode, track1, track2, track3);
公共外部静态intlib_McrRead(字节键号,字节模式,字节[]track1,字节[]track2,字节[]track3)

类似这样的内容:

byte keyNo = {?};
byte mode = {?};
byte[] track1 = {?};
byte[] track2 = {?};
byte[] track3 = {?};
int retValue = Lib_McrRead(keyNo, mode, track1, track2, track3);

(我不知道参数的值应该是什么……)/P>问题是我想使用库中包含的类,而不仅仅是方法。不知道P/Access互操作是什么,试着阅读类编组可能会有帮助:还有,你试图绑定C++类在托管代码中使用,然后看看CXXI,它转化为CppSharp。我在Java项目中实现了来自so的类(但我需要在Xamarin中使用它们),它们被用作导入,但我不确定它是什么语言。我认为这是因为java的导入。无论如何,谢谢你的链接,我将继续研究。Java库的绑定将通过Xamarin的

托管可调用包装器来完成
,我强烈建议您使用该类的本机语言,不要尝试混合使用多级封送,因为这会导致失败,因为如果您能让它正常工作,调试将是一场噩梦正确地…;-)也就是说,我想使用库中包含的类,而不仅仅是方法。不知道P/Access互操作是什么,试着阅读类编组可能会有帮助:也就是你试图绑定C++类在托管代码中使用,然后看CXXI,这就转化为CPPACHIP。我在Java项目中实现了来自so的类(但我需要在Xamarin中使用它们),它们被用作导入,但我不确定它是什么语言。我认为这是因为java的导入。无论如何,谢谢你的链接,我将继续研究。Java库的绑定将通过Xamarin的
托管可调用包装器来完成
,我强烈建议您使用该类的本机语言,不要尝试混合使用多级封送,因为这会导致失败,因为如果您能让它正常工作,调试将是一场噩梦正确地…;-)即