2013-10-19 29 views
0

我正在與一個名爲NSObject類靜態庫 「的ClientRequest」多個接口相同的實現 - 重複符號錯誤 - Objective - C的

我不得不進口型的ClientRequest的NSObject的我的其他類: A,B和C

因此,所有上述提到的類實現像下面

#import "ClientRequest.h" 

@interface A : ClientRequest 

#import "ClientRequest.h" 

@interface B : ClientRequest 

#import "ClientRequest.h" 

@interface C : ClientRequest  

靜態庫項目(.xcodeproj)加入到我自己的項目,其中包括與靜態libary目標。 當我運行我自己的項目時,A和B,A和C & A和ClientRequest出現'i386體系結構的重複符號_API_BASE_'錯誤。

任何想法如何解決這個問題?類A,B和C使用ClientRequest的方法。

+0

如何導入文件? – Sebastian

+0

我編輯了詳細信息 –

回答

1

沒有附加信息,您正在做什麼很難確定。然而,從給定的內容看來,您正在定義文件ClientRequest.h中的API_BASE,以便在每個包含新項目的文件中進行定義,並最終生成多個項目。

發生這種情況的一種方法是如果您錯誤地定義了全局變量。

如果您在ClientRequest.h聲明一個全局變量,說:

int API_BASE; 

然後文件彙編,其中包括報頭將自己定義該變量的副本,你會得到重複的符號錯誤。做正確的方法是聲明變量爲'的extern在標題:

extern int API_BASE; 

,並在ClientRequest.m一旦定義它:

int API_BASE; 

extern關鍵字表明您聲明將在別處定義的變量的名稱和類型。

所有的函數/方法聲明都隱式地是外部的,但是變量需要關鍵字。

HTH