2014-10-08 140 views
-1
Ld /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer- aeoygjukxhrzaxddvctkqcefsiql/Build/Products/Debug/NBAPlayer normal x86_64 
    cd /Users/noahheath/Documents/NBAPlayer 
    export MACOSX_DEPLOYMENT_TARGET=10.9 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Products/Debug -F/Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Products/Debug -filelist /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/NBAPlayer.LinkFileList -mmacosx-version-min=10.9 -stdlib=libc++ -Xlinker -dependency_info -Xlinker /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/NBAPlayer_dependency_info.dat -o /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Products/Debug/NBAPlayer 

duplicate symbol __ZN9NFLplayerC1Ev in: 
    /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/UnsortedStruct.o 
    /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/main.o 
duplicate symbol __ZN9NFLplayerC2Ev in: 
    /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/UnsortedStruct.o 
    /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/main.o 
duplicate symbol __ZN9NFLplayer8ComparedES_ in: 
    /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/UnsortedStruct.o 
    /Users/noahheath/Library/Developer/Xcode/DerivedData/NBAPlayer-aeoygjukxhrzaxddvctkqcefsiql/Build/Intermediates/NBAPlayer.build/Debug/NBAPlayer.build/Objects-normal/x86_64/main.o 
ld: 3 duplicate symbols for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

这是我从xcode收到的脚本,我找不到错误以挽救我的生命。有人可以帮我调试吗?原谅我,如果这不是以正确的格式。这是我第一次使用这个网站。Xcode链接器命令失败问题

这是我主要的代码和这里是无序结构类

#include "NFL.h" 
class UnsortedStruct 
{ 
public: 
    UnsortedStruct(); 
    int GetLength() const; 
    bool IsFull() const; 
    void EmptyList(); 
    void InsertItem(NFLplayer nflplayers); 
    void DeleteItem(NFLplayer nflplayers); 
    void ResetList(); 
    NFLplayer GetItem(NFLplayer nflPlayers, bool& found); 
    NFLplayer GetNextItem(); 
private: 
    int length; 
    int currentPos; 
    NFLplayer NFLlist[MAX_PLAYERS]; 
}; 

#include <string> 
using namespace std; 

const int MAX_PLAYERS = 10; 
enum RelationType1 {LESS1, GREATER1, EQUAL1}; 

struct NFLplayer//describes the set of information for a NFL player. 
{ 
    string position, school, name, team; 
    RelationType1 Compared(NFLplayer); 
    NFLplayer(); 
}; 

NFLplayer::NFLplayer() 
{ 
    position=" "; 
    school=" "; 
    name=" "; 
    team=" "; 
} 
RelationType1 NFLplayer::Compared(NFLplayer players) 
{ 
    if(name < players.name) 
     return LESS1; 
    else if(name > players.name) 
     return GREATER1; 
    else 
     return EQUAL1; 
} 
+0

你有一个重复的符号错误,这基本上意味着你在多个地方声明了同一个对象。请添加代码示例(来自main/UnsortedStruct),其中声明了“player”。如果可能,简短代码片段。 – MichaelCMS 2014-10-08 12:59:59

+0

@MichaelCMS我已经添加了我的客户端代码和我的UnsortedStruct文件 – 2014-10-08 13:30:41

+0

问题可能出现在NFL.h中。你确定只包含一次(pragma once/ifndef方法)吗?除了函数原型和外部/类变量外,您是否在NFL.h中实现/声明了任何内容? – MichaelCMS 2014-10-08 13:40:43

回答

0

您在.h文件中声明了您的构造函数和Comparison函数。将它们移动到.cpp文件中,并且应该顺利运行。

刚刚发生一个更深入的了解:

.h文件是拷贝粘贴到正在编译的每个对象。因此,main.o和UnsortedStruct.o将在预处理器时间将头文件复制粘贴到其对象中。

你有两个对象,并且你在每个对象中定义:: Comparison和:: NFLPlayer函数的实现。你最终得到两个相同函数的实现,因此是重复的符号。

的.h文件旨在为将要使用的结构,类功能(这是一个向前声明这么说)提供的定义。

实现主体是在.cpp文件中实现的,而这些文件将在编译后被编译并链接到代码中。

当你看到.h文件实现,你会看到,这些都是类定义:

Class A 
{ 
    void foo() { // do something }; 
} 

这是有效的,因为该功能将成为内联。如果该文件被包括作为报头中的多个编译单元(对象)

然而,宣布无效美孚,然后将其实现为A :: foo的()在同一个文件将是麻烦的。

+0

谢谢。我明白现在发生了什么事。我重新设计了我的程序的一部分,现在它可以工作。谢谢! – 2014-10-08 14:35:48

0

很多错误来源于数据,我认为你做的Xcode的升级?

做在Xcode以下步骤:

  • 产品 - >(按住Alt键) - >干净生成文件夹
  • 产品 - >清理项目
  • 窗口 - >管理 - >删除派生数据

然后重新编译您的项目。

+0

我没有升级xcode。我回来了,并从我的代码中添加了两个文件,以展示我正在进行的操作。 – 2014-10-08 13:41:33

相关问题