【问题标题】:Error - 2 duplicate symbols for architecture arm64? [duplicate]错误 - 架构 arm64 的 2 个重复符号? [复制]
【发布时间】:2014-11-14 17:14:45
【问题描述】:

我有一个BConstants.h 文件,我在其中放置了项目的所有常量。文件如下:

#ifndef asdf_BConstants_h
#define asdf_BConstants_h

typedef NS_ENUM(NSUInteger, BTheme) {
    kField
};

typedef NS_ENUM(NSUInteger, BItem) {
    kBox
};

typedef NS_ENUM(NSUInteger, BMovementState) {
    kTouchUp,
    kTouchDown
};

#endif

当我将以下三行添加到此文件时,当文件被 #imported 到另一个 .m 文件时,我收到后续错误

...

NSString * const kHero = @"Hero";
NSString * const kCount = @"Count";

#endif

错误:

duplicate symbol _kHero in:
...list of .o files
duplicate symbol kCount in:
...list of .o files
2 duplicate symbols for architecture arm64

我查看了已在 SO 上发布的问题,表明我的应用程序 compile sources 中可能有重复文件 target,但我检查并没有发现重复文件。这个问题还源于哪里​​,是在BConstants.h 文件中包含这两个 NSString 常量吗?

【问题讨论】:

    标签: objective-c xcode


    【解决方案1】:

    除了重复文件外,此错误还有其他两种可能性

    1. 您可能会错误地导入 .m 文件而不是 .h
    2. 常量 kHero 和 kCount 已在其他文件中定义。作为 您在常量文件中定义这些常量然后只需导入 Prefix.pch 文件中的该文件,并从其他任何地方删除。

    【讨论】:

    • 是的,我认为那些NSStrings需要先编译。我只是直接将.h 导入到任何.m 文件中。我是否将BPContants.h放在#import <Foundation/Foundation.h>#endif之间Prefix.pch
    • 这个答案没有解决实际问题。
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2017-04-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2015-06-15
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多