这两天做一个项目,里面集成微信,QQ,微博之类的分享平台。这个项目是有几个子项目共同组成的,主项目通过framework的形式引用个子项目,在子项目中进行开发,编译后系统自动生成的framework并引入到主工程中。项目需要在主工程appDelegate中进行初始化配置,在子工程中对SDK进行调用。一般情况下,单独一个工程开发的话,将SDK导入主工程就行了,可以在各个地方调用,但是我们项目的特点,要求将SDK在主工程中导入一次,也需要在子工程中导入一次,所以就出现了问题。
1.Duplicate symbol OBJC_IVAR$_ ……
当我将SDK的包导入两个工程时,Xcode报重复错误:
报错后,我能确定的是,两个包导入后,工程间引用有问题,但最终没有找到方法解决,只有将其中一个SDK移除工程。移除主工程后我再进行初始化配置是又会报找不到头文件、找不到引用等问题。后来问了一朋友,并将我工程等截图截给他,并把问题描述给他看了后,他告诉我这是因为静态库重复引用导致的。后来在他的指导下解决了这个问题。具体的解决方法如下:
- 进入你引用SDK的子工程
- 找到SDK包所在的目录,从上面截图来看是微博爆的错,所以找到libWeiboSDK.a
选中后打开Xcode右侧的文件检查器