【问题标题】:Include java *.so library in Xamarin Android project在 Xamarin Android 项目中包含 java *.so 库
【发布时间】:2015-11-27 17:58:50
【问题描述】:

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

  • 构建操作:AndroidNativeLibrary
  • 复制到输出:始终

另外,我尝试了以下代码来导入方法,如下所述:

https://stackoverflow.com/a/15902529/5610132

代码:

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

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

【问题讨论】:

    标签: android xamarin shared-libraries .so


    【解决方案1】:

    如果您的 DllImport 是:

    public extern static int Lib_McrRead(byte keyNo, byte mode, byte[] track1, byte[] track2, byte[] track3);

    类似这样的:

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

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

    【讨论】:

    • 问题是我想使用库中包含的类,而不仅仅是方法。
    • 不确定你是否理解 p/invoke interop 是什么,尝试阅读有关类编组的内容可能会有所帮助:mono-project.com/docs/advanced/pinvoke/…
    • 您还尝试绑定 c++ 类以在托管代码中使用,然后查看 CXXI,它已转换为 CppSharp。 tirania.org/blog/archive/2011/Dec-19.htmlgithub.com/mono/CppSharp
    • 我在 Java 项目中实现了 so 中的类(但我需要在 Xamarin 中使用它们),它们被用作导入,但我不确定它是什么语言。由于进口,我认为这是java。无论如何,谢谢你的链接,我会继续研究。
    • Java 库的绑定将通过 Xamarin 的 Managed Callable Wrappers 完成我强烈建议使用该类的本机语言,而不是尝试混合多个级别的封送处理,因为这是调试失败的秘诀如果你能让它正常工作,那将是一场噩梦...... ;-) 即developer.xamarin.com/guides/android/advanced_topics/…
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2016-08-02
    相关资源
    最近更新 更多