我正在尝试将自定义框架添加到 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_ECV
和 iPadTest
都调用 MKCalendar
作为框架
你可以在这里看看:
iPadTest
构建阶段:
API_ECV
构建阶段:
如果我删除API_ECV
中的链接,不会发生错误,但我无法使用MKCalendar 框架
有人有想法吗?我可以在不编译两次的情况下链接我的自定义框架吗?
谢谢;)
最佳答案
你有两个选择:
对于像您这样的简单依赖项,只需从
iPadTest
或API_ECV
中删除libMKCalendar.a
。然后它将恰好链接一次。 (如果编译器有问题,您需要指定其 header 的路径)。如果你有更复杂的依赖关系,只需将
MKCalendar
变成一个框架,然后它就可以被不同的目标智能地重用。如果您使用 Xcode 6 beta,则可以使用 iOS 框架。
关于ios - 架构 i386 的重复符号 - 添加自定义框架时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507456/