gpt4 book ai didi

c# - grpc.core 的 Xamarin iOS native 链接失败

转载 作者:行者123 更新时间:2023-12-04 15:31:13 25 4
gpt4 key购买 nike

我一直在尝试让 grpc 在 Xamarin Forms 上工作 (ssl http2),在经历了一些痛苦之后,我设法使用 Grpc.Core 让它在 Android 上工作。但是我无法让 iOS 编译。解决这个问题时,我试图获得与在 iOS 上工作相关的任何 grpc,并最终找到了 grpc 实验性 xamarin 演示 HelloworldXamarin。在这里找到:

https://github.com/grpc/grpc/tree/master/examples/csharp/HelloworldXamarin

我下载了解决方案,但是当我尝试编译它时出现以下错误:

enter image description here

错误文本:

native 链接失败, undefined symbol :operator delete(void*)。请验证是否已引用所有必要的框架并且已正确链接 native 库。

native 链接失败。请查看提供给 gcc 的构建日志和用户标志:-LC:/g/examples/csharp/HelloworldXamarin/packages/Grpc.Core.2.23.0/build/Xamarin.iOS10/../../native/ios/universal -lgrpc_csharp_ext -force_load C:/g/examples/csharp/HelloworldXamarin/packages/Grpc.Core.2.23.0/build/Xamarin.iOS10/../../native/ios/universal/libgrpc_csharp_ext.a -LC :/g/examples/csharp/HelloworldXamarin/packages/Grpc.Core.2.23.0/build/Xamarin.iOS10/../../native/ios/universal -lgrpc -force_load C:/g/examples/csharp/HelloworldXamarin/packages/Grpc.Core.2.23.0/build/Xamarin.iOS10/../../native/ios/universal/libgrpc.a

链接器命令失败,退出代码为 1(使用 -v 查看调用)

对于关于无法找到 libgrpc_csharp_ext.a 的警告,我验证了文件在那里。

native 链接似乎存在一些问题,我对此非常不熟悉。我使用的是几乎最新的 Visual Studio(好吧,16.5.3),这是一个带有最新操作系统和 XCode 更新到最新版本的 mac 构建主机。没有对从 git 中提取的文件进行任何更改。我这周才开始使用 Xamarin iOS,所以一切都应该处于相当“默认”的状态。

我的设置/系统可能有什么问题导致它不起作用?我知道这仍然是一个实验性功能,但我不知道我是否做了一些愚蠢的事情,或者是否有一些变化(比如 XCode?或者它需要 VS 2017?)导致它不再起作用?是否还有其他人能够编译此示例?

我还尝试了更新版本的 grpc nuget 包,但只会导致更多错误。

最终,我试图让最新的 Grpc.Core 在 Xamarin.Forms 上的 iOS 中工作,尽管我在 iOS 上的工作经验很少。如果最新版本的 XCode/Visual Studio/Grpc.Core 存在导致此问题的问题,我愿意尝试解决这些问题,如果有人能为我指明正确的方向。

最佳答案

它与您的版本或您做过或没做过的事情完全无关。

首先是一些理论:如果有人想在他们的 Xamarin 项目中使用 Objective-C 库或 CocoaPods 包,他们将需要为此创建一个绑定(bind)库。将其视为 native 实现与您可以使用的稍后公开的 C# 代码之间的某种“桥梁”。您可以从官方文档了解更多关于绑定(bind)的信息 here更具体地说 here .

总结信息 - 创建绑定(bind)后,您会看到一个 .lib.a 文件。这正是他们所做的——将一些 native 代码暴露到 libgrpc_csharp_ext.a 中。不幸的是,有些绑定(bind)不正确。这正是您在这里看到的 - 不正确绑定(bind)的结果。

通过深入了解该项目,我得出以下结论:

  1. 2019 年 5 月有一个关于此的未决问题 - https://github.com/grpc/grpc/issues/19172不幸的是,问题仍然存在,那里没有任何动静。
  2. 我已确认在 1.21(包括) 版本之后构建无法正常工作。现在,您可以降级到 1.20.1 版本(最后已知可用)。我已经成功地用它构建了解决方案。请查看此特定版本(如果有)的变更日志和发行说明,以便您了解它是否满足您的需求。

基本上,您有 2 个选择:

  1. 降级到上一个好版本才能使用;

  2. 如果您想使用最新版本,请等待问题得到修复,或者 fork 该存储库并帮助修复。

如果您想查看他们的构建脚本并帮助解决问题,您可以从 here 开始.

另一个有用的资源是这个 video来自 Xamarin 官方 channel 。

关于c# - grpc.core 的 Xamarin iOS native 链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61241431/

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