Xcode,重复的符号_main
我有重复的符号_main。
问题是“复制符号_main在/Users/…/i386/main-B9843B6026D6EFA4.o和/Users/…/i386/main-B9843B6026D6EFA4.o”中,XXX和XXX实际上是相同的。 o文件。 我不知道为什么它认为它是重复的符号,当它是相同的。
任何帮助表示感谢,谢谢。
啊..我知道这是我在目标/编译源(在较新的XCode它下面的生成阶段/编译源)下有多个条目。 我删除了他们,问题解决了。 多入口的事情可能与Git合并有关。
看来在我的情况下,我正在导入一个.m文件而不是.h文件。 通过编辑解决
#import "Tools.m"
成
#import "Tools.h"
我也有这个问题,这是由我从另一个项目导入的代码造成的。 我在我的项目目录中做了一个“int main”的grep:
grep -nr "int main" .
并find
./main.m:13:int main(int argc, char *argv[]) ./IMPORTED_DIR/main.m:13:int main(int argc, char *argv[])
IMPORTED_DIR包含额外的main.m,这对我造成了错误
我从项目 – >目标 – >生成阶段 – >编译源列表中删除该文件,然后编译
我使用两个第三方框架面临同样的问题。 (AppLovin和Flurry)我知道在构build设置中从“Other Linker Flags”中删除“all_load”。
我用Xcode 4.1创build了一个使用Xcode 4.0.2创build的项目,也遇到了同样的问题。 我只需点击“现代化项目”(编辑/现代化项目)即可解决问题。 此过程自动删除所有重复项。
如果仍然有问题,请尝试像这样search:“int main(”,并删除main.m以外的文件
刚刚自己解决了这个问题,但是看了huggie的解决scheme,让我走上了正轨,我感到有些困惑。 所以Xcode的当前解决scheme:select项目,目标 – >构build阶段,然后单击validation设置
然后Xcode将自动修复自己的错误。 当这些工具试图阻止你的进步的时候总是很好的;)
在我的情况下,我在我的常量文件(由许多类导入)中声明NSString,但忘记将其定义为静态!
例如NSString* PARAMS = @"paramA";
应该是: static NSString* PARAMS = @"paramA";
阅读完整的错误消息,让我想出了这个:“重复符号PARAMS”。 不要害怕,并尝试了解错误信息! 有时他们甚至可能会告诉你到底你做错了什么。
你也可以得到这个方法名称!
在通过CocoaPods添加duplicate symbol _runOnMainQueueWithoutDeadlocking
之后,我得到了duplicate symbol _runOnMainQueueWithoutDeadlocking
,这是因为NSObject(NSObject + Tools.h)和GPUImage依赖文件GPUImageOutput.m上的两个类都有一个名为“runOnMainQueueWithoutDeadlocking”的方法。
我有幸能够从代码中删除我的方法,因为我不再使用它或任何地方。
这可能是我应该把一个NSObject的类别。
就我而言,我已经导入了另一个项目,以便利用其中包含的库。 这导致我的项目有两个main.m文件。
这更令人困惑,因为直到几个版本之后才出现错误。