为架构i386复制符号

  • 本文关键字:复制 符号 i386 ios
  • 更新时间 :
  • 英文 :

Ld /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Products/Debug-iphonesimulator/QuizUsingDB.app/QuizUsingDB normal i386
    cd "/Users/ankit/Desktop/iOS Examples/QuizUsingDB"
    export IPHONEOS_DEPLOYMENT_TARGET=6.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -L/Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Products/Debug-iphonesimulator -F/Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Products/Debug-iphonesimulator -filelist /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Intermediates/QuizUsingDB.build/Debug-iphonesimulator/QuizUsingDB.build/Objects-normal/i386/QuizUsingDB.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=6.1 -lsqlite3 -framework UIKit -framework CoreGraphics -framework Foundation -Xlinker -dependency_info -Xlinker /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Intermediates/QuizUsingDB.build/Debug-iphonesimulator/QuizUsingDB.build/Objects-normal/i386/QuizUsingDB_dependency_info.dat -o /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Products/Debug-iphonesimulator/QuizUsingDB.app/QuizUsingDB
duplicate symbol _flag in:
    /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Intermediates/QuizUsingDB.build/Debug-iphonesimulator/QuizUsingDB.build/Objects-normal/i386/MediumViewController.o
    /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Intermediates/QuizUsingDB.build/Debug-iphonesimulator/QuizUsingDB.build/Objects-normal/i386/SimpleQuestionViewController.o
duplicate symbol _flag in:
    /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Intermediates/QuizUsingDB.build/Debug-iphonesimulator/QuizUsingDB.build/Objects-normal/i386/MediumViewController.o
    /Users/ankit/Library/Developer/Xcode/DerivedData/QuizUsingDB-bijvpcomctoytfblslktqvqbwaom/Build/Intermediates/QuizUsingDB.build/Debug-iphonesimulator/QuizUsingDB.build/Objects-normal/i386/HardViewController.o
ld: 2 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因是您在多个文件:MediumViewController, SimpleQuestionViewControllerHardViewController中有相同名称的常量:flag

请在其中一个重命名

该错误意味着在您的项目中有多个具有相同名称的静态变量。这可能有几种不同的方式。

问题案例1:

.h文件1:

#import ...
int flag;
@interface
@end

.h file 2:

#import ...
int flag;
@interface
@end

如果这两个。h文件包含在你的项目中,你有两个名为flag的全局变量。

问题2:

你有一个。h文件,在多个。m文件中导入了一个全局变量。

. h

#import ...
int flag;
@interface
@end

。M文件1:

#import "your.h"

。M文件2:

#import "your.h"

当您导入定义它的.h文件时,这两个.m文件都创建了一个名为flag的全局变量。

避免问题情形1的一种方法是重命名全局变量。避免问题2的一种方法是在.h文件中使用extern修饰符,然后在.m文件中定义#import作为.h文件的变量。这可能是其他几个问题,但这是我能马上想到的两个。

. h文件:

#import ...
extern int flag;
@interface
@end

。m文件

#import "your.h"
int flag
@implementation 
@end

确保只在导入.h文件的.m文件中定义标志变量,否则会再次出现重复的变量错误。

最新更新