Ios 类在这两种语言中都实现。将使用其中一个
我有一个使用SocketRocket的项目,它有一个依赖项(通过CocoaPods安装),并且从HeapanAnalytics导入了一个静态库。显然,HeapAnalytics库已经使用了SocketRocket。我在编译时没有收到错误,但在运行时收到以下信息:Ios 类在这两种语言中都实现。将使用其中一个,ios,objective-c,objective-c-runtime,socketrocket,Ios,Objective C,Objective C Runtime,Socketrocket,我有一个使用SocketRocket的项目,它有一个依赖项(通过CocoaPods安装),并且从HeapanAnalytics导入了一个静态库。显然,HeapAnalytics库已经使用了SocketRocket。我在编译时没有收到错误,但在运行时收到以下信息: Class SRWebSocket is implemented in both [path] and [path]. One of the two will be used. Which one is undefined. 我不知道
Class SRWebSocket is implemented in both [path] and [path].
One of the two will be used. Which one is undefined.
我不知道如何处理它,因为我看到的大多数解决方案都需要自己编译静态库,更改类名等等,而且我没有访问源代码的权限
有什么建议吗?我写了那个错误消息 要么更改类名,要么不链接所述库 您的项目是如何配置的?是否有任何地方明确链接到SR?或者它是链接两个已经包含SR的静态库的产物 如果是前者,则停止直接针对SR的链接,只继承已经使用它的库附带的版本(警告:确保它具有正确的版本) 如果是后者,则必须修改其中一个库
•实际上,我修改了错误。它曾经暗示会使用其中一个。但事实并非如此,不同平台的行为也不同。因此,对其进行了更改,以便更准确地识别未定义的行为。我编写了该错误消息!• 要么更改类名,要么不链接所述库 您的项目是如何配置的?是否有任何地方明确链接到SR?或者它是链接两个已经包含SR的静态库的产物 如果是前者,则停止直接针对SR的链接,只继承已经使用它的库附带的版本(警告:确保它具有正确的版本) 如果是后者,则必须修改其中一个库
•实际上,我修改了错误。它曾经暗示会使用其中一个。但事实并非如此,不同平台的行为也不同。因此,对其进行了更改,以便更准确地识别未定义的行为。在我的案例中,当我不必要地将源文件添加到我的主应用程序目标和测试目标时,会出现此错误: 将测试目标从
目标成员身份中删除
解决了它:
在我的情况下,当我不必要地将源文件添加到我的主应用程序目标和测试目标时,出现此错误: 将测试目标从
目标成员身份中删除
解决了它:
概述:
该错误表明同一符号/类别定义了两次
解决方案:
- 检查链接的框架,查看是否存在任何重复项。如果是,请删除副本
- 清理生成文件夹(Command+Shift+K)
- 如果是模拟器,则重置模拟器并重试
- 如果是设备,请重新启动设备并重试
- 检查链接的框架,查看是否存在任何重复项。如果是,请删除副本
- 清理生成文件夹(Command+Shift+K)
- 如果是模拟器,则重置模拟器并重试
- 如果是设备,请重新启动设备并重试
我曾两次面临同样的问题,一次是重复的框架,另一次是重置模拟器的帮助。我收到这个警告已经一个多月了,然后我终于尝试了这个方法,它对我有效:
我有这个警告已经一个多月了,然后我终于尝试了这个,它对我起了作用:
我想你必须停止直接链接
SocketRocket
,而是依赖HeapAnalytics
中包含的链接。如何停止链接通过CocoaPods安装的依赖项?我想你必须停止直接链接SocketRocket
而是依赖于HeapAnalytics
中包含的内容。如何停止与通过CocoaPods安装的内容相关的内容链接?谢谢。不幸的是,这证实了我的怀疑,我将不得不完全修改其中一个库。修复比我想象的要容易得多。我想我需要做一些非常复杂的事情,但我所要做的就是重构->重命名所有出现的SRWebSocket及其伴随的内部类。我能预见的唯一问题是,如果非HeapAnalytics库使用不同版本的SR,可能会出现一些问题。@bbum项目如何使用项目链接的另一个框架中的框架类?(就像你在回答中所说的,这适用于第一种情况,即项目显式链接到SR)如果我不输入,它将无法识别框架类,有没有办法消除这个警告?@bbum是否有什么东西可以传递给dyld,也许可以通过某个dyld环境变量,让它只是pic