Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Xamarin.Android和Xamarin.iOS上使用dllmap?_C#_Mono_Xamarin.ios_Xamarin.android_Dllimport - Fatal编程技术网

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

C# 如何在Xamarin.Android和Xamarin.iOS上使用dllmap?,c#,mono,xamarin.ios,xamarin.android,dllimport,C#,Mono,Xamarin.ios,Xamarin.android,Dllimport,我用的是Xamarin.Android,有一个像这样的项目 Windows本机库(NativeMethods.dll) Android本机库(NativeMethods.so) 可移植P/Invoke库,DllImport到NativeMethods.dll Windows应用程序(使用可移植的P/Invoke库+Windows本机库) Android应用程序(使用便携式P/Invoke库+Android本机库) 使用mono,只需在App.config中使用,即可将任何DllImports

我用的是Xamarin.Android,有一个像这样的项目

  • Windows本机库(NativeMethods.dll)
  • Android本机库(NativeMethods.so)
  • 可移植P/Invoke库,DllImport到NativeMethods.dll
  • Windows应用程序(使用可移植的P/Invoke库+Windows本机库)
  • Android应用程序(使用便携式P/Invoke库+Android本机库)
使用mono,只需在App.config中使用,即可将任何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将自动附加
。因此

但是,对于iOS,您需要一个dllmap(因为库名称必须是
\u Internal


来源:

我不确定dllmap是否适用于iOS。你成功地使用了它吗?@ananthonline:我个人没有尝试过,没有。但是如果你有问题,请随时用测试用例提交bug(),因为它应该可以工作。