2015-09-04 73 views
2

duplicate symbol _webViewManager in: app/Build/Intermediates/app-name.build/Debug-iphonesimulator/app-name.build/Objects-normal/x86_64/PostsShowViewController.o app/Build/Intermediates/app-name.build/Debug-iphonesimulator/app-name.build/Objects-normal/x86_64/FirstViewController.o ld: 1 duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)导入头两次:体系结构x86_64的重复符号

我正在尝试编译时出现上述错误。 当我尝试在两个不同的视图控制器中导入名为WebViewManager.h的文件时,会发生这种情况。

WebViewManager.h

#import <UIKit/UIKit.h> 

@interface WebViewManager : NSObject 

@property (strong, nonatomic) UIWebView *webView; 

+ (id)getUniqueWebViewManager: (UIViewController *)container; 
- (void)loadUrlWithString: (NSString *)urlString; 
- (void) removeWebViewFromContainer; 

@end 

FirstViewController.m

#import "FirstViewController.h" 
#import "PostsShowViewController.h" 
#import "Constants.h" 
#import "AppDelegate.h" 
#import "WebViewManager.h" 

PostsShowController.m

#import "PostsShowViewController.h" 
#import "FirstViewController.h" 
#import "AppDelegate.h" 
#import "WebViewManager.h" 

同样,如果我尝试在多个位置尝试#import "Constants.h",也会发生相同的错误。

编辑:

Constants.h

NSString *BASE_URL = @"google.com"; 

EDIT2:

OCCURENCES WebViewManager:

FirstViewController.m

@implementation FirstViewController 

WebViewManager *webViewManager; 
+0

你有两次宣布同一个班级吗?或者一个具有相同名称的类已经存在于某些外部依赖中?有时候,如果你在头文件中定义了东西,而不是在.m文件中,它会发生。 –

+0

@SamhanSalahuddin hm ..我不完全确定。当我尝试导入只包含一行的头文件时,会发生同样的错误:'NSSTring * BASE_URL = @“google.com”;'在两个不同的视图控制器中。 –

+1

请在您的项目中显示所有出现的“webViewManager”(注意:案例很重要)。 – trojanfoe

回答

2

你忘了在头文件中使用extern,因此每个执行文件,其中包括Constants.h被宣告了自己的BASE_URL实例。

你想:

extern NSString *BASE_URL 

而这Constants.m

NSString *BASE_URL = @"google.com"; 

或者,你也可以只在Constants.h使用:

#define BASE_URL @"google.com" 

,忘记Constants.m

但是我没有足够的信息告诉你为什么链接器正在抱怨 webViewManager

OK,部分#2:

的问题是,有多个叫webViewManager全局符号,你是错误声明它们。使用:

@interface FirstViewController : UIViewController { 
    WebViewManager *_webViewManager; 
} 

(和其他类相同)。这使他们实例变量,而不是全局变量。

+0

'Constants.h'只是一个包含一个字符串'BASE_URL'的文件。如果我试图在多个视图控制器中包含一个简单的头文件“Constants.h”,那么即使没有“WebViewManager”文件,我也会将它包含在问题中,以致出现错误。 –

+1

@MaximusS好的,我已经通过半答案更新了。 – trojanfoe

相关问题