带有嵌入式框架的 Xamarin.ios 抛出 Dllnotfound

我使用 XCode 创建了 12 个相同的框架,只是它们的名称不同(每个框架都源自其各自的 XCode 项目名称)。

按照 this 指南,我将其中一个框架作为本机参考嵌入到 Xamarin.ios 项目中。

使用 [DllImport("Framework",EntryPoint = "Functionname")] 我能够在调试和发布模式下以及在模拟器和设备上访问 12 个框架中的任何一个。到目前为止,一切都很好。

但是,当将所有 12 个框架添加到 Xamarin.ios 项目时,在设备上运行期间开始发生奇怪的事情(模拟器不知何故不受影响!):只能访问几个框架(通常4)、剩下的抛出一个Dllnotfound异常。甚至更多:根据将框架添加到 Xamarin.ios 项目的顺序,它可能会被访问​​或抛出异常(!)例如,如果我使用以前构建的 8 个“坏”框架之一开始添加过程过程,这个将不再是坏的并且可以很好地访问 - 作为回报,来自前构建过程的可访问框架之一将抛出 Dllnotfound。 澄清一下,这12个框架都具有相同的内在生命,只是名称不同,入口点名称不同,其余完全相同,因此可以互换。

我的第一个想法是为 Xamarin 项目建立的嵌入式框架的数量或大小有限制吗??在我的例子中,包含 12 个框架的应用在调试模式下的总大小约为 110 Mb。

我的下一个想法是框架之间可能的符号冲突:但这些不是使用“Internal__”的静态库以及所有符号的巨大池,而是一组严格分离的具有不同名称的框架(容器系统)。此外,符号冲突会在构建期间导致错误,而不是在运行期间...

另一个想法是关于我的免费配置文件:也许使用付费开发者帐户可以嵌入的框架数量没有限制??这将解释为什么它总是在 Sim 上工作......

我尝试过的更多东西以及它们的所有潜在组合(尽管到目前为止都没有成功):

  • 使用不同版本的 XCode 构建框架(版本 8 和 11)

  • 使用不同版本的 Visual Studio for Mac 构建调用程序(2017 和 2019)

  • 在设备上使用不同版本的部署(iOS 10.3 和 13.2)

  • 在 Visual Studio 中使用“智能链接”选项作为本机引用

  • 对 Visual Studio 中的本机引用使用“强制加载”选项

  • 另外使用选项在“附加 mtouch 参数”中为 Visual Studio 中的本机引用指定链接器标志

  • 在 Visual Studio 中使用设置“链接所有程序集”

我是否在流程、设置或想法中遗漏了什么? 经过这么多时间的调查,任何帮助将不胜感激。谢谢:-)

abliz13 回答:带有嵌入式框架的 Xamarin.ios 抛出 Dllnotfound

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/20007.html

大家都在问