首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ld:重复符号

ld:重复符号
EN

Stack Overflow用户
提问于 2008-11-12 01:17:53
回答 3查看 51.3K关注 0票数 15

我正在做一个学校项目,我从Xcode那里得到了一些奇怪的错误。我使用TextMate的Command+R函数编译该项目。编译似乎工作正常,但链接失败的错误消息,我不明白。

ld输出:

ld: /path/final/build/final.build/Release/final.build/Objects-normal/ppc/generics.o和/path/final/build/final.build/Release/final.build/Objects-normal/ppc/main.o collect2中的重复符号text_field(std::basic_istream >&):ld返回1个退出状态

下面是我的文件io_functions.cpp,这是整个项目中唯一的text_field声明。

代码语言:javascript
运行
复制
#include <string>
#include <iostream>
#include <iomanip>

using namespace std;

#ifndef ENDF
#define ENDF '|'
#define ENDR '\n'

/**
reads one field from a given input stream
Usage: var = text_field(in)
*/
string text_field(istream &in){
    string s;
    getline(in, s, ENDF);
    return s; 
}

long long_field(istream &in){
    return atol(text_field(in).c_str()); 
}

int int_field(istream &in){
    return atoi(text_field(in).c_str()); 
}

double double_field(istream &in){
    return atof(text_field(in).c_str()); 
}

#endif

出什么问题了?出于许多原因,我不想发布我的项目的全部来源。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-12 01:26:54

我的第一个想法是,您将它两次包含在链接器命令中,但它似乎在抱怨在main.ogenerics.o中具有相同的功能。

因此,看起来您正在将io_functions.cpp文件包含到main.cppgenerics.cpp中,这在最好的时候是个坏主意。

您应该有一个头文件(例如,io_functions.h),它指定io_functions.cpp中包含的所有内容,并将该头文件包含到其他两个文件中。

票数 22
EN

Stack Overflow用户

发布于 2008-11-12 01:22:59

听起来io_functions.cpp被包括了两次(一次是generics.cpp,一次是main.cpp)。

票数 6
EN

Stack Overflow用户

发布于 2020-01-23 07:50:52

使用“内联”关键字修饰复制方法

代码语言:javascript
运行
复制
inline string text_field(istream &in)

内联函数是将函数体的副本直接注入到调用函数的每个地方的实际函数。

有关详细信息,请参阅文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/282700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档