gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:08:20 24 4
gpt4 key购买 nike

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

  • Windows 原生库 (NativeMethods.dll)
  • Android 原生库 (NativeMethods.so)
  • 可移植的 P/Invoke 库,DllImport 到 NativeMethods.dll
  • Windows 应用程序(使用可移植的 P/Invoke 库 + Windows native 库)
  • Android 应用程序(使用可移植的 P/Invoke 库 + Android native 库)

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

我试过了,但我似乎无法让它与 Xamarin.Android 一起工作。我想避免编译两个 MSIL P/Invoke 库和两个 native 库(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。有没有人遇到/解决了这个问题?我错过了什么?如果为 Xamarin.iOS 执行此操作的解决方案有任何不同,我也会感兴趣,因为那将是我需要定位的下一个平台。

提前致谢!

最佳答案

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

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

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

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

关于c# - 如何在 Xamarin.Android 和 Xamarin.iOS 上使用 dllmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com