我正在尝试将自定义框架添加到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 framework
有人有想法吗?我可以链接我的自定义框架而不编译它两次吗?
Thx;)
答案 0 :(得分:1)
根据您发布的内容,我想:
所以这里是您的副本来自,API_ECV两次来自直接链接和 MKCalendar链接。 两种可能的解决方案:
答案 1 :(得分:1)
您有两种选择:
对于像您这样的简单依赖项,只需从libMKCalendar.a
或iPadTest
中删除API_ECV
即可。然后它将只链接一次。 (如果编译器遇到问题,您需要指定其标题的路径。)
如果你有更复杂的依赖关系,只需将MKCalendar
转换为框架,然后它就可以被不同的目标智能地重用。如果您使用Xcode 6 beta,则可以使用iOS框架。