繁体   English   中英

如何在Xamarin.Android和Xamarin.iOS上使用dllmap?

[英]How can I use dllmap on Xamarin.Android and Xamarin.iOS?

我正在使用Xamarin.Android,有一个像这样的项目设置

  • 适用于Windows的本机库(NativeMethods.dll)
  • 适用于Android的本机库(NativeMethods.so)
  • 便携式P / Invoke库,DllImport到NativeMethods.dll
  • Windows应用程序(使用便携式P / Invoke库+ Windows本机库)
  • Android应用程序(使用便携式P / Invoke库+ Android本机库)

使用mono,可以简单地在App.config中使用dllmap将任何DllImports重新映射到NativeMethods.dll到NativeMethods.so

我尝试过,但我似乎无法使用Xamarin.Android。 我想避免编译两个MSIL P / Invoke库以及两个本机库(Android和Windows各一个)。

这是我的app.config的样子

  <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
    <dllmap dll="NativeMethods.dll" target="NativeMethods.so"/>
  </configuration>

我在P / Invoke DLL项目,Xamarin.Android应用程序项目中尝试了这个,但它在任何地方都不起作用。 我发现我的问题的唯一参考是类似一个用于iOS系统。 有没有人遇到/解决了这个问题? 我错过了什么? 如果为Xamarin.iOS执行此操作的解决方案有任何不同,我也会感兴趣,因为这将是我需要定位的下一个平台。

提前致谢!

使用NativeMethods (不带扩展名)作为库的名称。

.NET将自动附加.dll ,Mono将在搜索库时自动附加.so

但是对于iOS,你需要一个dllmap(因为库名必须是__Internal

资料来源: http//www.mono-project.com/docs/advanced/pinvoke/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM