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)
我在尝试编译时遇到上述错误。
当我尝试在两个不同的 View Controller 中导入一个名为 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 "ostsShowViewController.h"
#import "Constants.h"
#import "AppDelegate.h"
#import "WebViewManager.h"
PostsShowController.m
#import "ostsShowViewController.h"
#import "FirstViewController.h"
#import "AppDelegate.h"
#import "WebViewManager.h"
同样,如果我在多个地方尝试 #import "Constants.h"
也会出现同样的错误。
编辑:
Constants.h
NSString *BASE_URL = @"google.com";
编辑2:
WebViewManager 出现次数:
FirstViewController.m
@implementation FirstViewController
WebViewManager *webViewManager;
您忘记在头文件中使用 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
。
好的,第 2 部分:
问题是有多个名为 webViewManager
的全局符号,因为您错误地声明了它们。使用:
@interface FirstViewController : UIViewController {
WebViewManager *_webViewManager;
}
(其他类也一样)。这使得它们实例变量,而不是全局变量。
关于ios - 两次导入header : duplicate symbol for architecture x86_64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32399668/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |