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

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

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

使用单声道,可以简单地使用 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 应用程序项目中试过这个,但它在任何地方都不起作用。我找到的关于我的问题的唯一参考是 this 与 iOS 类似的参考。有人 encountered/solved 这个问题吗?我错过了什么?如果为 Xamarin.iOS 执行此操作的解决方案有任何不同,我也会感兴趣,因为那将是我需要定位的下一个平台。

提前致谢!

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

.NET会自动追加.dll,Mono会在搜索库时自动追加.so

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

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