代码之家  ›  专栏  ›  技术社区  ›  epochwolf

重复符号

  •  9
  • epochwolf  · 技术社区  · 17 年前

    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中的重复符号文本字段(std::basic_istream>) collect2:ld返回了1个退出状态

    下面是我的文件io_functions.cpp这是整个项目中唯一的文本_字段声明。

    #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
    

    出什么事了?出于许多原因,我不想发布我的项目的全部源代码。

    2 回复  |  直到 13 年前
        1
  •  22
  •   paxdiablo    16 年前

    我的第一个想法是,您在linker命令中包含了两次它,但它似乎在抱怨在 main.o generics.o

    看来你包括了 io_functions.cpp main.cpp generics.cpp

    您应该有一个头文件(例如。, io_functions.h io_functions.cpp 包括 标题

        2
  •  5
  •   Josh Kelley    17 年前

        3
  •  1
  •   Snow Albert    6 年前

    inline string text_field(istream &in)
    

    内联函数是实际函数,其函数体的副本直接注入函数调用的每个位置。

    详情请参阅 article