如何解决xamarin ios扩展无法通过P / Invoke运行本机代码,而没有“全部链接”链接器行为
我有一个基于xamarin.forms的uwp,iOS和android项目,该项目成功使用了以 C / C ++ 编写的库中的本机代码。
对于iOS,我使用一个 iOS绑定库项目,该项目对原始代码实现了一个 P / Invoke 层,该原始代码被编译为胖库并链接到绑定库中。这里一切都很好。
现在,我添加了一个 UNNotificationServiceExtension ,它本身也可以正常工作。我已经添加了我在iOS应用程序项目中使用的相同的 iOS绑定库,作为对 UNNotificationServiceExtension 的引用,并且可以成功调用该绑定库的代码对本机代码进行 P / Invoke 调用。这将始终抛出 System.EntryPointNotFoundException 。
我想知道为什么我的iOS应用程序在这里能正常工作,而未修改的绑定库在iOS UNNotificationServiceExtension 中使用时会表现出这种行为。
仅提供一些数据点: UNNotificationServiceExtension 支持与我的iOS应用完全相同的处理器体系结构,并且两个项目都使用“仅Link Framework SDK” 作为链接器设置调试和发布配置。但是,如果将 UNNotificationServiceExtension 的项目的链接器设置更改为“全部链接” ,则一切正常。似乎“仅链接框架SDK” 设置从生成的二进制文件中剥离了 P / Invoked 本机库。
我该怎么做才能将绑定库中的本机库强制包含在生成的二进制文件中?关于相关主题,我读了一些有关其他 mtouch 参数的信息。有人可以阐明这一点吗?
任何帮助表示赞赏,
- 斯蒂芬
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。