2014-10-08 4 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 Ошибка

Вот мой основной код и вот неотсортированной класс STRUCT

#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

У вас есть повторяющаяся ошибка символа, которая в основном означает, что вы объявили один и тот же объект в нескольких местах. Пожалуйста, добавьте образцы кода (из основного/UnsortedStruct), где объявлен «игрок». Краткие фрагменты кода, если это возможно. – MichaelCMS

+0

@MichaelCMS Я добавил код клиента и файл UnsortedStruct –

+0

Проблема может быть в NFL.h. Вы включили его только один раз (метод pragma once/ifndef)? Вы реализовали/заявили что-либо внутри NFL.h, помимо прототипов функций и переменных внешнего/класса? – MichaelCMS

ответ

0

Вы указали свой конструктор и свою функцию Compared внутри файла .h. Переместите их в файл .cpp, и все должно работать плавно.

Более понимание того, что происходит:

.h файлы копии вставляются в каждый объект, который скомпилированный. Таким образом, main.o и UnsortedStruct.o будут иметь заголовочный файл, скопированный внутри своего объекта в препроцессорное время.

У вас есть два объекта, и в каждом объекте вы определяете реализацию функций :: Compared и :: NFLPlayer. Вы получаете две реализации одной и той же функции, следовательно, дубликат символа.

Файлы .h предназначены для предоставления определений для используемых структур, классов, функций (это, так сказать, прямое объявление).

Органы реализации реализованы в файлах .cpp, которые, в свою очередь, будут скомпилированы, а затем объединены во всем коде после компиляции.

Когда вы видите внедрения в .h файлов, вы увидите, что они находятся внутри определения класса:

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

Это справедливо, потому что функция будет встраиваемой.

Однако объявление void foo, а реализация его как A :: foo() в том же файле будет проблематичной, если файл будет включен в качестве заголовка в нескольких единицах компиляции (объектов).

+0

Спасибо. Я понимаю, что происходит сейчас. Я переработал эту часть своей программы, и теперь она работает. Спасибо! –

0

Много ошибок из полученных данных, я предполагаю, что вы сделали обновление Xcode?

Выполните следующие действия в Xcode:

  • продукта -> (удерживать нажатой клавишу Alt) -> чистой сборки FOLDER
  • продукт -> Clean Project
  • Window -> Организатор -> Удалить производные данные

Затем снова создайте свой проект.

+0

Я не обновлял xcode. Я вернулся и добавил два файла из своего кода, чтобы дать представление о том, что у меня происходит. –

Смежные вопросы