我正在使用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;
但为什么呢?模拟器和手臂构建有什么区别?
答案 0 :(得分:2)
当我在头文件中将常量定义为extern时,问题得以解决。
// MyView.h
extern const float kToolbarHeight;
// MyView.m
const float kToolbarHeight = 45;