ios - 架构 i386 的重复符号 - 添加自定义框架时出错

标签 ios objective-c xcode

我正在尝试将自定义框架添加到 2 个项目中,但发生了错误。

    duplicate symbol _OBJC_CLASS_$_ApiECV in:
    /Users/kevinmachado/Library/Developer/Xcode/DerivedData/EnvDevTestiPad-bvscnxvnzjltpxcxuoomuaqqsxpj/Build/Products/Debug-iphonesimulator/libAPI_ECV.a(ApiECV.o)
    /Users/kevinmachado/Library/Developer/Xcode/DerivedData/EnvDevTestiPad-bvscnxvnzjltpxcxuoomuaqqsxpj/Build/Products/Debug-iphonesimulator/libMKCalendar.a(ApiECV.o)
duplicate symbol _OBJC_METACLASS_$_ApiECV in:
    /Users/kevinmachado/Library/Developer/Xcode/DerivedData/EnvDevTestiPad-bvscnxvnzjltpxcxuoomuaqqsxpj/Build/Products/Debug-iphonesimulator/libAPI_ECV.a(ApiECV.o)
    /Users/kevinmachado/Library/Developer/Xcode/DerivedData/EnvDevTestiPad-bvscnxvnzjltpxcxuoomuaqqsxpj/Build/Products/Debug-iphonesimulator/libMKCalendar.a(ApiECV.o)
ld: 2 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我认为这个错误是因为我尝试编译我的自定义框架两次。

我的工作区有 3 个项目。 API_ECViPadTest 都调用 MKCalendar 作为框架

你可以在这里看看: Projet tree

iPadTest 构建阶段: iPadTest build Phase

API_ECV 构建阶段: API_ECV build Phase

如果我删除API_ECV 中的链接,不会发生错误,但我无法使用MKCalendar 框架

有人有想法吗?我可以在不编译两次的情况下链接我的自定义框架吗?

谢谢;)

最佳答案

你有两个选择:

  1. 对于像您这样的简单依赖项,只需从 iPadTestAPI_ECV 中删除 libMKCalendar.a。然后它将恰好链接一次。 (如果编译器有问题,您需要指定其 header 的路径)。

  2. 如果你有更复杂的依赖关系,只需将MKCalendar变成一个框架,然后它就可以被不同的目标智能地重用。如果您使用 Xcode 6 beta,则可以使用 iOS 框架。

关于ios - 架构 i386 的重复符号 - 添加自定义框架时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507456/

相关文章:

ios - Swift: case foo (let bar): 没有类型或赋值?

objective-c - 如何获取 Mac 操作系统的实际名称而不是版本?

Xcode内部调试日志

cocoa : Send class data to the user interface (Databinding?)

ios - 检查 segue 标识符而不是使用失败的类型转换有好处吗?

ios - BoundingRectWithSize - 选择使用的字体和字体大小

objective-c - MetalKit - 如何使用(MTKTextureLoader 方法)newTextureWithContentsOfURL 的选项?

iPhone 4 增强现实与 iOS5 使用哪些传感器?

ios - Xcode 中的代码签名 "Debug"或 "Release"有什么意义?

ios - 向形状添加手势 - c4framework