Xcode 链接器命令失败问题
Xcode linker command failed issue
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收到的脚本,我找不到错误来挽救我的生命。有人可以帮我调试吗?如果它没有以正确的格式呈现,请原谅我。这是我第一次使用这个网站。
这是我的主要代码,这里是未排序的结构类
#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;
}
您在 .h 文件中声明了构造函数和 Compare 函数。将它们移动到.cpp文件中,事情应该会顺利进行。
对正在发生的事情的更多见解:
.h文件被复制粘贴到正在编译的每个对象中。因此,main.o 和 UnsortedStruct.o 将在预处理器时将头文件复制粘贴到其对象中。
您有两个对象,在每个对象中定义 ::compare 和 ::NFLPlayer 函数实现。你最终得到同一个函数的两个实现,因此是重复的符号。
.h文件旨在为要使用的结构,类,函数提供定义(可以说是前向声明(。
实现体在.cpp文件中实现,编译后将编译并链接整个代码。
当你在.h文件中看到实现时,你会看到这些在类定义中:
Class A
{
void foo() { // do something };
}
这是有效的,因为该函数将内联。
但是,声明 void foo ,然后在同一个文件中将其实现为 A::foo(( 如果该文件作为标头包含在多个编译单元(对象(中,则会很麻烦。
派生数据中有很多错误,我假设你对 Xcode 进行了升级?
在 Xcode 中执行以下步骤:
- 产品 --> (按住 Alt 键( --> 清理构建文件夹
- 产品展示 --> 洁净工程
- 窗口 -->管理器 --> 删除派生数据
然后再次生成项目。
相关文章:
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 我应该如何在C++中使用结构体解决输入失败的问题?
- 调试模板时出现问题.专门针对 Linux GCC 7、GCC 6、GCC 5、GCC 4.9 错误构建失败:模板参数 1
- 查找在 4 和问题中代码失败的测试用例
- exteranl原生构建问题,构建命令失败,android工作室
- build命令失败,外部原生问题android工作室
- C ++回测问题:如何检查构造函数在假定失败时是否失败(给定输入的无效参数)
- 断言失败错误,C++中的矢量下标超出范围问题
- 如何解决来自 arduino 的 post 请求的问题,在失败之前只收到 2-3 次
- TFS构建由于链接问题而失败
- 班级路径问题 - getJnienv失败了
- 由于libkern.h中的语义问题,Xcode Build失败
- C++ 运行失败:退出值 2 - 我的代码出了什么问题?
- 我遇到此问题,运行程序时出现一个弹出窗口,指出调试断言失败
- 断言在C++问题中失败
- 生成文件问题,获取"目标'rgbapixel.o'的配方失败"
- 使用快速英特尔随机生成器(SSE2)会因堆栈问题而失败..已损坏
- C++将节点添加到链表的开头一次后失败.其他方法也有问题
- 失败错误处理问题
- Xcode 链接器命令失败问题