架构i386的2个重复符号,链接器命令失败,退出代码为1

时间:2015-11-04 11:08:53

标签: ios objective-c linker

我已阅读了许多与此错误相关但仍面临此问题的帖子。 我在我的项目中使用MMDrawerController,当我在app委托文件中声明MMDrawerController时如同MMDrawerController *drawerController;

然后工作正常但是当我在Constant.h文件中声明它并在appDelegate文件中导入Constant.h文件并尝试创建构建时它会给我以下错误

 duplicate symbol _drawerController in:
/Users/icecube/Library/Developer/Xcode/DerivedData/VenueFinder-eowuotuoweptcnfmzowyaajchlnv/Build/Intermediates/VenueFinder.build/Debug-iphonesimulator/VenueFinder.build/Objects-normal/i386/NavigationViewController.o
/Users/icecube/Library/Developer/Xcode/DerivedData/VenueFinder-eowuotuoweptcnfmzowyaajchlnv/Build/Intermediates/VenueFinder.build/Debug-iphonesimulator/VenueFinder.build/Objects-normal/i386/ViewController.o
duplicate symbol _drawerController in:
/Users/icecube/Library/Developer/Xcode/DerivedData/VenueFinder-eowuotuoweptcnfmzowyaajchlnv/Build/Intermediates/VenueFinder.build/Debug-iphonesimulator/VenueFinder.build/Objects-normal/i386/NavigationViewController.o
/Users/icecube/Library/Developer/Xcode/DerivedData/VenueFinder-eowuotuoweptcnfmzowyaajchlnv/Build/Intermediates/VenueFinder.build/Debug-iphonesimulator/VenueFinder.build/Objects-normal/i386/AppDelegate.o
ld: 2 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

不知道我做错了什么?我已经检查过而不是导入.m文件而不是.h
如果 MMDrawerController *drawerController; 这个声明在appDelegate文件中,然后它工作正常,但如果这个声明在Constant.h文件中,并在AppDelegate.m文件中导入Constant.h文件,那么它会给出错误。

2 个答案:

答案 0 :(得分:0)

同一个变量在两个类中都像gobally一样退出,所以在本地声明它,比如

@interface ViewController : UIViewController{
    MMDrawerController *drawerController;
}

似乎你在两个类的实现部分声明了这个变量,我的意思是 .m 文件。

@implementation ViewController
MMDrawerController *drawerController;

答案 1 :(得分:0)

通过pod安装MMDrawerController pod' MMDrawerController','〜> 0.5.7'

删除项目中库的手动导入。 Xcode正在为您的MMDrawerController获取重复路径,因此最好在构建设置中检查 LINKER搜索路径