2013-04-26 116 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