【问题标题】:Duplicate symbols in iOS universal framework (i386)iOS 通用框架 (i386) 中的重复符号
【发布时间】: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


【解决方案1】:

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

// MyView.h

extern const float kToolbarHeight;

// MyView.m

const float kToolbarHeight = 45;

about extern

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2012-10-07
    • 1970-01-01
    • 2012-12-08
    • 2012-10-25
    相关资源
    最近更新 更多