Xcode中重复的符号_main
-
22-09-2019 - |
题
我的雪豹10.6.2收到以下错误在Xcode 3.2.1每当我尝试编译由Appcelerator的钛产生的任何iPhone应用程序。但是,只有当我选择的架构菜单上的iPhone模拟器出现生成错误,如果我选择在iPhone设备,我能到我的设备上运行的应用程序。
更进一步,iPhone仿真成功发射,并直接从使用的Xcode构建钛环境执行该程序。
这是为什么?
ld: duplicate symbol _main in Resources/libTitanium.a(main.o) and /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/Objects-normal/i386/main.o collect2: ld returned 1 exit status Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
解决方案
我不能告诉你为什么发生这种情况,但我可以提出一个解决办法。当我注释掉这是我的钛项目产生的main.m文件中的全部内容,我能成功编译并在模拟器上运行。让我知道是否适合你。
其他提示
检查,如果你有主功能的多个声明在你的项目。
我只花了几个小时争夺这一块。这是因为我用的是-all_load链接标志。如果使用该标志,以绕过类别的bug,还有一些其他的解决办法 - 看的此处。
我也有类似的问题。单元测试类是意外包括在我的构建。如果你搜索你的项目“主(”你可能会发现重复的功能。
这发生在我有两个原因:
1:A类调用类B和两个进口了相同的类。通过在.m文件导入类修复它。
2:两个类具有相同的名称(即使该常数以.m文件中定义的)的常数。通过改变常数的名称解决它。
我有这个问题,因为我定义文件作为这样:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
...
}
和也有一个文件的main.m:
int main(int argc, char* argv[])
{
@autoreleasepool {
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
return retVal;
}
}
好像有多种方式进入这种状态。我的是不同的。我读一个提示,你可以从一个事件的.xib选择拖到.H实现您的视图控制器,它会自动根你的方法。它没有 - 这是很酷的。我立刻开始了重复的符号错误 - 这是不冷静
我没有时间深入挖掘链接,看看发生了什么。我创建了一个新的视图控制器,复制我的旧的.xib的情况下进入新来的家伙。删除旧.H,.M和的.xib和建造,并再次合作。很奇怪,很讨厌浪费时间。
有明显与此xcode的 “方便” 一些错误。
我发现这发生了,当我在它(比如abc.m)曾与一个主要功能的实现文件,也有另一个main.m
。一旦我评论出abc.m
的主要功能,该项目编译成功。
根据离我可以从这些其他答案告诉,我要去需要被删除一堆main
方法。
但是,要做到这一点很容易我首先需要从我的文件中删除所有的GD的意见,因为他们刻苦钻研与意见记录在几乎所有其他行
这正则表达式匹配所有的C多行注释,包括他们的定界符&可以帮助你在你的旅程
/\*((?!\*/).)*\*/
我在寻找一个正确的答案,但对我的工作没有什么用了一个多小时。 最后,告诉自己的事情Xcode是重复的,所以去特定的文件夹(在这种情况下:/Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/对象正常/ I386 / main.o),此并删除所有文件,并检查同一项目中的特定的类/接口是否被声明两次,如果是删除它。
在缺失清洁和运行项目。
它为我希望这有助于(-_-)。
删除/Users/{username}/Library/Developer/Xcode/DerivedData
文件夹并生成一次。