iOS通用框架中的重复符号(i386)

时间:2013-04-26 14:44:29

标签: iphone ios objective-c xcode frameworks

我正在使用iOS Universal framework 模板。

我创建了框架并将它们作为子项目添加到另一个项目中。 并为项目添加了框架二进制文件。

在我的框架中有一些常量

const float kToolbarHeight = 45;

当我正在尝试构建我的项目并包含Framework for iphone模拟器(i386),有链接器错误:

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

但是当我为设备构建它时 - 没有任何链接器错误。

我试图从Project中排除subProject(我的框架),并且只保留二进制文件,但没有任何影响。

我正在尝试将目标中的体系结构更改为i386$(VALID_ARCHS),如 在that问题中描述,但没有任何影响。

如何为iOS模拟器构建框架,我应该使用哪些目标设置?

更新:我定义时问题已解决 我的常量作为头文件中的extern。

// MyView.h

extern const float kToolbarHeight;

// MyView.m

const float kToolbarHeight = 45;

但为什么呢?模拟器和手臂构建有什么区别?

1 个答案:

答案 0 :(得分:2)

当我在头文件中将常量定义为extern时,问题得以解决。

// MyView.h

extern const float kToolbarHeight;

// MyView.m

const float kToolbarHeight = 45;

about extern