Xcode中的体系结构的重复符号
这是编译时收到的错误信息…
Ld /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Products/Debug-iphonesimulator/MasterDetail.app/MasterDetail normal i386 cd /Users/ilia3546/Проекты/iDecide setenv IPHONEOS_DEPLOYMENT_TARGET 5.0 setenv 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/iPhoneSimulator6.0.sdk -L/Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Products/Debug-iphonesimulator -F/Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Products/Debug-iphonesimulator -filelist /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetail.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=5.0 -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Products/Debug-iphonesimulator/MasterDetail.app/MasterDetail duplicate symbol _main in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/main-E0BAF2CA88EDEE32.o duplicate symbol _OBJC_IVAR_$_MasterDetailAppDelegate._window in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailAppDelegate-C2C06F734ECE2E36.o duplicate symbol _OBJC_IVAR_$_MasterDetailAppDelegate._navigationController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailAppDelegate-C2C06F734ECE2E36.o duplicate symbol _OBJC_IVAR_$_MasterDetailAppDelegate._splitViewController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailAppDelegate-C2C06F734ECE2E36.o duplicate symbol _OBJC_CLASS_$_MasterDetailAppDelegate in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailAppDelegate-C2C06F734ECE2E36.o duplicate symbol _OBJC_METACLASS_$_MasterDetailAppDelegate in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailAppDelegate-C2C06F734ECE2E36.o duplicate symbol _OBJC_IVAR_$_MasterDetailDetailViewController._detailItem in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_IVAR_$_MasterDetailDetailViewController._TitleOfDetail in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_IVAR_$_MasterDetailDetailViewController._detailDescriptionLabel in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_IVAR_$_MasterDetailDetailViewController._masterPopoverController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_IVAR_$_MasterDetailDetailViewController.WebView in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_CLASS_$_MasterDetailDetailViewController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_METACLASS_$_MasterDetailDetailViewController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailDetailViewController-B3C32DC7B1BE4E38.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController._detailViewController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController._Controller1 in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController.listOfDecide in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController.listOfDecideOpis in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController.listOfGraph in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController.listOfGraphOpis in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController.listOfAbout in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_IVAR_$_MasterDetailMasterViewController.listOfAboutOpis in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_CLASS_$_MasterDetailMasterViewController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o duplicate symbol _OBJC_METACLASS_$_MasterDetailMasterViewController in: /Users/ilia3546/Library/Developer/Xcode/DerivedData/MasterDetail-fhgogwnbpzovbtaskgecptdnvgjs/Build/Intermediates/MasterDetail.build/Debug-iphonesimulator/MasterDetail.build/Objects-normal/i386/MasterDetailMasterViewController-A4C5EC1C14AE6E3A.o ld: 23 duplicate symbols for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
appdelegate.m –
#import "MasterDetailAppDelegate.h" #import "MasterDetailMasterViewController.h" #import "MasterDetailDetailViewController.h" @implementation MasterDetailAppDelegate @synthesize window = _window; @synthesize navigationController = _navigationController; @synthesize splitViewController = _splitViewController; - (void)dealloc { [_window release]; [_navigationController release]; [_splitViewController release]; [super dealloc]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { MasterDetailMasterViewController *masterViewController = [[[MasterDetailMasterViewController alloc] initWithNibName:@"MasterDetailMasterViewController_iPhone" bundle:nil] autorelease]; self.navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease]; self.window.rootViewController = self.navigationController; } else { MasterDetailMasterViewController *masterViewController = [[[MasterDetailMasterViewController alloc] initWithNibName:@"MasterDetailMasterViewController_iPad" bundle:nil] autorelease]; UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease]; MasterDetailDetailViewController *detailViewController = [[[MasterDetailDetailViewController alloc] initWithNibName:@"MasterDetailDetailViewController_iPad" bundle:nil] autorelease]; UINavigationController *detailNavigationController = [[[UINavigationController alloc] initWithRootViewController:detailViewController] autorelease]; self.splitViewController = [[[UISplitViewController alloc] init] autorelease]; self.splitViewController.delegate = detailViewController; self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil]; self.window.rootViewController = self.splitViewController; } [self.window makeKeyAndVisible]; return YES; } - (void)applicationWillResignActive:(UIApplication *)application { /* Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. */ } - (void)applicationDidEnterBackground:(UIApplication *)application { /* Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. */ } - (void)applicationWillEnterForeground:(UIApplication *)application { /* Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. */ } - (void)applicationDidBecomeActive:(UIApplication *)application { /* Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. */ } - (void)applicationWillTerminate:(UIApplication *)application { /* Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. */ } @end
main.m –
// // main.m // MasterDetail // // Created by Wei-Meng Lee on 3/9/11. // Copyright (c) 2011 __MyCompanyName__. All rights reserved. // #import <UIKit/UIKit.h> #import "MasterDetailAppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([MasterDetailAppDelegate class])); } }
我检查导入.m文件,而不是.h,但都正确。
在构build阶段,请检查您是否不是多次编译同一个文件。 即如果你searchmain.m它应该只返回一个结果。
如果这不是问题,你可以将你的main.m中的代码添加到问题中吗?
检查您的导入文件,可能是您导入.m文件。
#import "TimeModel.m"
虽然以下不是OP的原因,但它是我的,所以我会在这里分享给那些面临同样错误的人:
如果您在所有全局variables上都收到链接器错误,则可能需要在头文件中的声明中添加extern
。
缺lessextern是否会产生这个问题取决于编译设置,更具体地说,在“Apple LLVM代码生成”(GCC_NO_COMMON_BLOCKS,-fno-common)下的“No Common Blocks”中。 如果设置为yes,这是Xcode新版本中的默认设置,则无需extern
即可获得链接器错误。
为什么是extern?
extern
关键字使得它只是一个声明(即不是一个定义),因为它是一个头文件是你想要的。 一些编译器允许它没有外部,仍然“做正确的事情”,但省略extern是不鼓励的。 这就是为什么新版本的Xcode默认启用警告的原因。
这是Xcode 7.0中的情况,带有重复的符号错误,以防其他人遇到这种情况
.h file NSUserDefaults *defaults; // <----placing this above the @interface caused the issue @interface someViewController //...
改成
.h file @interface someViewController { NSUserDefaults *defaults; } //...
这也可能发生在不同的文件中有不同的实现时具有相同的@interface。 例如,您有一个Player类,在Player.h / m文件中,并且您有一个Match类(Match.h / m),并且两个玩家之间的匹配,但不是前面提到的玩家。
Player.h
@interface Player : NSObject @property (nonatomic) NSUInteger _id; @property (nonatomic, strong) NSString* firstName; @property (nonatomic, strong) NSString* lastName; @property (nonatomic, strong) NSString* username; @end
Match.h
@class Player @interface Match : NSObject @property (nonatomic, strong) Player* player1; @property (nonatomic, strong) Player* player2; @property (nonatomic) NSUInteger matchId; @end @interface Player : NSObject @property (nonatomic, strong) NSString* nickName; @property (nonatomic, strong) NSString* point; @property (nonatomic, strong) NSNumber* lastMove; @end
在这种情况下,编译器会看到两个不同的Player类实现。 您需要将Match.h文件中的Player类重构为MatchPlayer。
在我的情况下,问题是.m文件被包括两次。
问题:
原因:
解决scheme:只保留一个文件参考。
我碰到了一个问题, typedef
没有被添加到一个enum
和重复的符号错误出现在2个文件之间。
enum <name> { ... } <name>;
通过在enum
之前添加typedef
修复重复的符号。