如何在 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 本机库)
使用单声道,可以简单地使用 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
)
我正在使用 Xamarin.Android,有一个像这样设置的项目
- Windows (NativeMethods.dll) 的原生库
- Android (NativeMethods.so) 的原生库
- 便携式 P/Invoke 库,DllImport 到 NativeMethods.dll
- Windows 应用程序(使用可移植 P/Invoke 库 + Windows 本机库)
- Android 应用程序(使用可移植 P/Invoke 库 + 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
)