我正在使用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应用程序项目中尝试了此操作,但是它在任何地方都无法使用.我发现的唯一参考是针对iOS的this类似参考.有没有人遇到/解决过这个问题?我想念什么?我也想知道针对Xamarin.iOS的解决方案是否有所不同,因为这将是我需要定位的下一个平台.
提前致谢!
解决方法:
使用NativeMethods(无扩展名)作为库的名称.
搜索该库时,.NET将自动附加.dll,而Mono将自动附加.so.
但是,对于iOS,您将需要一个dllmap(因为库名必须为__Internal)
来源:http://www.mono-project.com/docs/advanced/pinvoke/