2013-04-26 111 views
0

我正在使用iOS Universal framework 模板。iOS通用框架(i386)中的重複符號

我創建了框架,並將它們作爲子項目添加到另一個項目中。 並添加框架二進制文件到項目中。

在我的框架

有一些常量

const float kToolbarHeight = 45; 

,當我試圖建立我的項目,包括框架 iPhone模擬器(I386),有鏈接錯誤:

ld: 14 duplicate symbols for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

但是當我建立它的設備 - 沒有任何鏈接器錯誤。

我試圖從項目中排除子項目(我的框架),並且只保留二進制文件,但沒有任何效果。

我試圖改變目標架構的i386,並以​​,如that問題描述 ,但沒有任何效果。

如何構建iOS模擬器的框架,我應該使用哪些目標設置?

更新:當我定義 我的常量在頭文件的extern的問題得到了解決。

// MyView.h 

extern const float kToolbarHeight; 

// MyView.m 

const float kToolbarHeight = 45; 

但是爲什麼?模擬器和手臂有什麼不同?

+0

燁那你是怎麼做到這一點...繼續前進,把它寫成一個答案的接受它,它可以幫助別人的未來。 – 2013-04-27 14:24:25

+0

ok @GradyPlayer,但是,我不明白,爲什麼它工作,而我沒有在ARM編譯中寫入「extern」? – BergP 2013-04-28 06:25:18

+0

不同的鏈接器...不同的遊戲...?它真的不能幫助你想知道錯誤的東西有時候會起作用...... – 2013-04-28 14:29:08

回答

2

當我在頭文件中將常量定義爲extern時,問題已解決。

// MyView.h 

extern const float kToolbarHeight; 

// MyView.m 

const float kToolbarHeight = 45; 

about extern