【发布时间】:2013-04-26 14:44:29
【问题描述】:
我正在使用iOS Universal framework 模板。
我创建了框架并将它们作为子项目添加到另一个项目中。 并将框架二进制文件添加到项目中。
在我的框架中有一些常量
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)
但是当我为设备构建它时 - 没有任何链接器错误。
我试图从 Project 中排除 subProject(我的框架),并且只保留二进制文件,但没有任何效果。
我正在尝试将目标中的架构更改为 i386 和 $(VALID_ARCHS),如
在that issue 中描述,但没有任何效果。
如何为iOS模拟器构建框架,我应该使用哪些目标设置?
更新:我定义的时候问题就解决了 我的常量作为头文件中的外部变量。
// MyView.h
extern const float kToolbarHeight;
// MyView.m
const float kToolbarHeight = 45;
但是为什么呢?模拟器和手臂构建有什么区别?
【问题讨论】:
-
是的,你就是这样做的......继续写它作为答案并接受它,它可能会在未来帮助某人。
-
好的 @GradyPlayer ,但是,我不明白,为什么它在我没有在 ARM 构建中写“extern”的情况下起作用?
-
不同的链接器...不同的衰减...?想知道错误的事情有时会起作用真的无济于事......
标签: iphone ios objective-c xcode frameworks