Objective c 生成失败,原因为:ld:重复符号_OBJC_类$_Algebra5FirstViewController

Objective c 生成失败,原因为:ld:重复符号_OBJC_类$_Algebra5FirstViewController,objective-c,ios,xcode,ios5.1,Objective C,Ios,Xcode,Ios5.1,在通过iPhone模拟器运行我的应用程序时,我突然出现以下错误: 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看 调用): ld:中的重复符号_OBJC_CLASS_$_Algebra5FirstViewController …/Algebra5 anwcuftojtgkfootneeqhwztj/Build/Intermediates/Algebra5.Build/Debug iphonesimulator/Algebra5.Build/Objects normal/i386/Exe

在通过iPhone模拟器运行我的应用程序时,我突然出现以下错误:

叮当声:错误:链接器命令失败,退出代码为1(使用-v查看 调用):

ld:中的重复符号_OBJC_CLASS_$_Algebra5FirstViewController …/Algebra5 anwcuftojtgkfootneeqhwztj/Build/Intermediates/Algebra5.Build/Debug iphonesimulator/Algebra5.Build/Objects normal/i386/ExercisesViewController.o 及 …/Algebra5 anwcuftojtgkfootneeqhwztj/Build/Intermediates/Algebra5.Build/Debug-iphonesimulator/PSLE Algebra5.build/Objects normal/i386/PSLE_Algebra5FirstViewController.o 用于架构i386


这是关于什么的?

看起来类Algebra5FirstViewController是多次编译的

能否确保.m和.mm在Xcode的项目源中只包含一次?您还可以通过检查编译日志(右边的最后一个图标,断点图标旁边)来确认这一点,并查看确认它只编译了一次

此外,如果该类是链接所针对的库的一部分,并且有一个同名的类,则可能会出现相同的错误

最后,您可以尝试清理和重建,以防旧的对象文件仍然存在,并且编译的文件中有一些垃圾。以防万一

编辑


我还注意到,第二个参考是在ExercisesViewController文件中进行的。也许这个文件里有些东西。要么导入了Algebra5FirstViewController文件而不是.h,要么ExercisesViewController使用@implementation(Algebra5FirstViewController)而不是@implementation(ExercisesViewController),或者此文件中存在一些垃圾,将通过清理和重建来清理。

如果在目标的“编译源代码”部分的“构建阶段”中多次引用同一个.m文件,则可能会发生这种情况。删除重复的条目就可以了。

在头文件中声明了一个
const*NSString
(错误地)而不是实现文件(正确地)

在一个案例中,我在将新类“.h和.m”拖到项目中时看到了这个错误。我找到的唯一解决方案是删除对这些文件的引用,然后通过“项目”菜单重新添加它们。

我在添加来自另一个项目的文件时遇到了类似的错误,如@paiego解释的。我的错误是没有选中“添加到目标”。如上所述,我删除了引用并再次添加了文件,但这次选中了“添加到目标”。我遇到了相同的错误。
我已经导入了一个我不再使用的音频框架。我删除了它(不要删除!),并成功构建了它。

'linker命令失败,退出代码为1(使用-v查看调用)'-我在iPhone上运行phonegap应用程序时遇到此错误。我只将Build Active Architecture更改为Yes,它工作正常。

我遇到这个问题是因为我不小心导入了.m而不是.h。希望阅读本文能为有同样问题的人节省一些时间。

对于m,我似乎将文件拖到了项目中,但没有成功,然后单击了文件“将文件添加到项目”。这两种方法都是错误的。只需将它拖到包含其他.h和.m文件的项目文件夹中(在finder中)。

在OSX 10.7.5上运行Xcode 4.6.3能够通过将构建机器的体系结构从$(Native_ARCH_ACTUAL)更改为Native Architecture来修复此错误。

我也有同样的问题。解决了

若您已经将任何文件导入到项目中,那个么请检查.m(main)文件是否存在于目标(项目名称)->构建阶段->编译源代码中

如果文件不存在,则使用所示的(+)添加按钮将其包括在内。 此外,如果存在重复文件(如果有),则将其删除

现在按cmd+shift+k来清理项目。新生成不应显示此错误

一旦我

18 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1
对我来说,这是因为我在开关箱中使用了“const NSInteger”

我所做的是将const NSInteger更改为enum,并用enum值替换引用


这为我修复了错误。

我曾经通过(意外地)将.h和.m文件导入到同一个类中而收到此错误。

这可能是由于“编译源代码”部分中缺少某些文件,或者为某些文件找到了重复的条目。在我的例子中,我有两个文件的重复条目,我删除了每个文件的一个条目,这解决了我的问题。希望这能有所帮助。

我在实现一个没有添加必要框架的子类时遇到了这个错误(在本例中,没有MediaPlayer框架的MPMoviePlayerController)

我在TableViewController中导入ViewController.m时遇到了这个错误。如果退出,请尝试删除“#导入”ViewController.m“。希望这有帮助

我在使用Bolts.framework时遇到了同样的问题。事实证明,当螺栓损坏时,再重新导入也无法修复该问题。我不得不回到原来的下载文件,重新导入它完全从头开始。这个马上就修好了。这是一个很奇怪的问题,我花了很长时间才弄明白。。。希望这个技巧能让你们中的一些人免于同样的挫折:)

这发生在我命名UILabel引用和int时,同样的事情,我只有在尝试运行它时才输入它,所以我没有意识到这是个问题,但是如果你有类似标签的东西,它就是“分数”你称之为分数,并命名一个int,它是分数,也就是分数,然后这个问题就出现了。

我发现了这个,它为我提供了一个解决方案。它与Xcode 7有关,在以前的版本中,没有公共块的默认值是Yes而不是No

这是文章的一段引语:

问题似乎在于“Apple LLVM”中的“无公共块” 6.1“生成设置”窗格中的“代码生成”部分已设置
xcodebuild -workspace MyProject.xcworkspace/ -scheme MyScheme -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3.1' test