2008-11-12 71 views
9

Tôi đang làm việc trên một dự án trường học và tôi gặp phải một số lỗi lạ từ Xcode. Tôi đang sử dụng lệnh Command + R của TextMate để biên dịch dự án. Biên dịch có vẻ ổn nhưng liên kết không thành công với thông báo lỗi mà tôi không hiểu.ld: biểu tượng trùng lặp

ld đầu ra:

ld: trùng lặp biểu tượng text_field (std :: basic_istream> &) trong /path/final/build/final.build/Release/final.build/Objects-normal/ppc/ generics.o và /path/final/build/final.build/Release/final.build/Objects-normal/ppc/main.o collect2: ld trở về 1 trạng thái thoát

Dưới đây là io_functions tập tin của tôi. cpp Đây là khai báo duy nhất của text_field trong toàn bộ dự án.

#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 

Điều gì đang xảy ra? Vì một số lý do tôi không muốn đăng toàn bộ nguồn dự án của mình.

Trả lời

15

Suy nghĩ đầu tiên của tôi là bạn đã bao gồm nó hai lần trên lệnh trình liên kết nhưng dường như bạn đang phàn nàn về việc có cùng chức năng trong main.ogenerics.o.

Vì vậy, có vẻ như bạn đang bao gồm tệp io_functions.cpp vào main.cppgenerics.cpp vốn là ý tưởng tồi lúc tốt nhất.

Bạn nên có một tập tin tiêu đề (ví dụ, io_functions.h) chỉ rõ tất cả những gì chứa đựng trong io_functions.cpp và bao gồm rằng file header thành hai người kia.

3

Có vẻ như io_functions.cpp đang được bao gồm hai lần (một lần bởi generics.cpp, một lần bởi main.cpp).

+0

Không #ifndef ngăn điều đó xảy ra? – epochwolf

+6

Chỉ trong đơn vị biên dịch - ở đây bạn có hai đơn vị biên dịch riêng biệt. Ifndef sẽ ngăn bạn bao gồm tệp hai lần trong main.cpp. – paxdiablo

Các vấn đề liên quan