lee*_*lee 201 objective-c ios xcode5
我现在对上面的标题有同样的问题,但还没有找到正确的答案.我收到了错误:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
最后 我找出了这个错误的原因,因为我加入-ObjC
了Other Linker Flags
.删除此值后,我可以成功构建我的项目,但我不知道为什么.有谁能解释一下?
小智 252
对我来说,将"No Common Blocks"从Yes更改为No(在Targets-> Build Settings-> Apple LLVM - Code Generation下)修复了问题.
Ada*_*ite 246
愚蠢的,但要确保你没有#import
在.m
某处错误地编辑过文件
Dav*_*d V 96
架构x86_64的75个重复符号
表示您已经加载了两次相同的功能.由于问题进行去除后消失 -ObjC
的Other Linker Flags,
,这意味着该选项结果是功能加载两次:
来自技术问答
此标志使链接器加载定义Objective-C类或类别的库中的每个目标文件.虽然此选项通常会导致更大的可执行文件(由于加载到应用程序中的其他对象代码),但它将允许成功创建包含现有类的类别的有效Objective-C静态库.
https://developer.apple.com/library/content/qa/qa1490/_index.html
Sau*_*lui 53
在我的例子中,我刚刚创建了一个头文件来定义这样的常量字符串:
NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
Run Code Online (Sandbox Code Playgroud)
我使用static
以下方法解决了这个问题
static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
Run Code Online (Sandbox Code Playgroud)
sim*_*ley 30
我发现接受的答案触及了问题,但没有帮助我解决它,希望这个答案将有助于解决这个非常令人沮丧的问题.
duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:
17 duplicate symbols for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
"表示您已经加载了两次相同的函数.由于从其他链接器标志中删除-ObjC后问题消失,这意味着此选项导致函数加载两次:"
通俗地说,这意味着我们的项目中有两个文件具有完全相同的名称.也许你正在将一个项目合并到另一个项目中?看一下"重复符号"错误上面的错误,看看哪个文件夹是重复的,在我看来是BLoginViewController.
例如,在下面的图像中,您可以看到我有两个BImageViewControllers,对我而言,这就是导致问题的原因.
一旦我删除了一个,那么问题就消失了:)
Luc*_*nzo 29
当您在不同的类中声明具有相同名称的const变量时也会发生:
在文件Message.m中
const int kMessageLength = 36;
@implementation Message
@end
Run Code Online (Sandbox Code Playgroud)
在文件Chat.m中
const int kMessageLength = 20;
@implementation Chat
@end
Run Code Online (Sandbox Code Playgroud)
Bla*_*ard 28
当我在两年前在Objective-C中开发的项目中接受"推荐设置"弹出窗口时,就会发生这种情况.
问题是,当您接受"推荐设置"更新时,Xcode会自动更改或添加一些构建设置,包括GCC_NO_COMMON_BLOCKS = YES;
.
这使得构建失败并且duplicate symbol
更新了我的更新项目中的错误.所以我改变了No Common Block
对NO
我的构建设置和错误不见了.
TDe*_*ign 18
安装 Cocoapods 后我遇到了这个问题。现在每次我更新一些豆荚时都会发生。我发现的解决方案:
进入终端:
1) pod deintegrate
2) pod install
Run Code Online (Sandbox Code Playgroud)
此外,请检查您的构建设置中的“始终嵌入 Swift 库”项。它应该是“褪色”,表示它正在使用默认配置。如果它设置为手动 YES,请点击删除以将其恢复为默认配置。这停止了行为。
CKR*_*666 13
从其他链接器标志中删除-ObjC或者请检查您是否错误导入了任何.m文件而不是.h文件.
我的问题是架构 x86_64 有 5 个重复的符号。阅读这篇文章和他们的答案后,我尝试使用常见的解决方案更改GCC_NO_COMMON_BLOCKS = YES
为NO
但是,我没有为我工作,而是从 5 个重复项变成了 1 个重复项......
所以,我注意到了最后一个错误,我意识到我的问题是什么,它与这些包“不兼容”(我在 中都有package.json
):
rn-fetch-blob
react-native-blob-util
Run Code Online (Sandbox Code Playgroud)
该消息很清楚,我将其删除,rn-fetch-blob
因为我不知道为什么它出现在我的项目中,但是,我只与 jest 一起使用并删除它,这不是问题。
因此,删除该包后,yarn
再次运行,问题解决了......并且无需更改GCC_NO_COMMON_BLOCKS
我在Xcode 7.3中打开一些遗留项目的情况是:
duplicate symbol _SomeEnumState in:
Run Code Online (Sandbox Code Playgroud)
接下来是两个不相关的文件列表.然后重复几次,最后:
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
为我解决的是改变枚举声明:
enum SomeEnumState {
SomeEnumStateActive = 0,
SomeEnumStateUsed = 1,
SomeEnumStateHidden = 2
} SomeEnumState;
Run Code Online (Sandbox Code Playgroud)
对此:
typedef NS_ENUM(NSUInteger, SomeEnumState) {
SomeEnumStateActive = 0,
SomeEnumStateUsed = 1,
SomeEnumStateHidden = 2
};
Run Code Online (Sandbox Code Playgroud)
如果有人对此有解释,请赐教.
更新 2021 年答案,Xcode 12.X:
pod deintegrate
pod install
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
今天,我遇到了同样的错误。错误的关键词是duplicate
。我通过以下方式修复它:
1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :
Run Code Online (Sandbox Code Playgroud)
3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
217183 次 |
最近记录: |