项目中用到Three20框架,同时也使用了讯飞语音的framework,编译时出现类似如下冲突提示信息:

ld: duplicate symbol _OBJC_CLASS_$_AdLinks in /Users/w/Documents/project 2/dianxing_v2.00_code_reconfiguration/iFlyLib/iFlyTTS.framework/iFlyTTS(AdvertiseDataDefine.o) and /Users/w/Documents/project 2/dianxing_v2.00_code_reconfiguration/iFlyLib/iFlyISR.framework/iFlyISR(AdvertiseDataDefine.o) for architecture i386
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1

网上收集了一下对于该问题的解答,感觉还比较靠谱,粘贴如下:

个人猜想,大概是在iFlyTTS和iFlyISR在编译的时候,都加入了AdvertiseDataDefine.m(AdvertiseDataDefine.o)这个文件,而里面包含了AdLinks这个类的category。在一般的链接参数下倒是没有问题(因为category的链接被忽略了),但是如果引入了Three20,于是就加入了-ObjC - all_load这个参数(没办法,这个参数对于Three20的运行时必须的),于是这个链接错误就表现出来了(于是链接时就出现了duplicate symbol _OBJC_CLASS_$_AdLinks in iFlyTTS(AdvertiseDataDefine.o) and iFlyISR(AdvertiseDataDefine.o) for architecture XXXX)。

解决方案:修改链接参数(Other Linker Flag)
1.去掉-ObjC -all_load参数(这个参数会强制所有的静态链接库都加载其中的category);
2.改为逐一加载Three20的各个静态库,即修改链接参数(Other Linker Flag)为如下形式:

-force_load $(BUILT_PRODUCTS_DIR)/libThree20.a 
-force_load $(BUILT_PRODUCTS_DIR)/libThree20UINavigator.a 
-force_load $(BUILT_PRODUCTS_DIR)/libThree20UICommon.a 
-force_load $(BUILT_PRODUCTS_DIR)/libThree20UI.a 
-force_load $(BUILT_PRODUCTS_DIR)/libThree20Style.a 
-force_load $(BUILT_PRODUCTS_DIR)/libThree20Network.a 
-force_load $(BUILT_PRODUCTS_DIR)/libThree20Core.a

ps:写这篇文章主要目的是为了说明,在碰到Three20和其他framework冲突的时候,可以考虑一下逐个加载Three20的lib,而不是使用-ObjC - all_load参数一次性强制加入。

-force_load使用办法的更多相关文章

  1. ios 静态库冲突的解决办法

    最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理 ...

  2. 微信1.8.6.1 SDK 无法授权登录解决办法

    我用的cocos2d-lua 3.9 项目打包 调用微信授权登录的时候 授权登录接口一直抛异常导致微信都无法拉起来 按照官网配置了universal link (这个也搞了很长时间jason 配置文件 ...

  3. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  4. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  5. 懒加载session 无法打开 no session or session was closed 解决办法(完美解决)

           首先说明一下,hibernate的延迟加载特性(lazy).所谓的延迟加载就是当真正需要查询数据时才执行数据加载操作.因为hibernate当中支持实体对象,外键会与实体对象关联起来.如 ...

  6. 使用JSONObject.fromObject的时候出现“There is a cycle in the hierarchy”异常 的解决办法

    在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常.   意思是出现了死循环,也就是Model之间有循环包含关系: ...

  7. win7安装时,避免产生100m系统保留分区的办法

    在通过光盘或者U盘安装Win7操作系统时,在对新硬盘进行分区时,会自动产生100m的系统保留分区.对于有洁癖的人来说,这个不可见又删不掉的分区是个苦恼.下面介绍通过diskpart消灭保留分区的办法: ...

  8. logstash file输入,无输出原因与解决办法

    1.现象 很多同学在用logstash input 为file的时候,经常会出现如下问题:配置文件无误,logstash有时一直停留在等待输入的界面 2.解释 logstash作为日志分析的管道,在实 ...

  9. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

随机推荐

  1. android 使用虚拟机安装apk(图文教程)(转)

    1.启动虚拟机 2.我的android sdk在“E:\android\android开发环境\android SDK\platform-tools”把要安装的apk复制到这个根目录(和adb.exe ...

  2. 将dataset写入数据库

    最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.upda ...

  3. dom 关键字提示

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. python GUI初步

  5. JS初识(着重讲解Date函数)

    查看类型:typeof() 转换为int类型:parseInt() isNaN() 函数用于检查其参数是否是非数字值. NaN,是Not a Number的缩写.一种计算机用语.NaN 用于处理计算中 ...

  6. VISIO 2007 修改形状默认字体 自定义模具

    visio 2007的形状的默认字体为8号,比较小,怎样改成默认10号? 首先将一个流程图中所要用的形状都拖到绘图区,然后全选,设置字体为10号,全选,再拖动到形状区,如下图: 点击‘是’,确认修改模 ...

  7. login placeholder

    $(function(){ function isPlaceholder(){ var input = document.createElement('input'); return 'placeho ...

  8. 编译安装-Apache

    一.配置选项说明 二.安装apache 1.环境准备 2.安装apr 3.安装apr-util 4.安装pcre 5.安装httpd 6.修改配置文件 7.开机自启动 8.注册为服务 9.测试 一.配 ...

  9. input value的值不可改变

    同样是东钿微信服务平台,使用积分的问题,原来的版本是,默认用户不使用积分,也就没有给input赋值,后面华总说默认让用户使用积分,于是我就信誓旦旦把从后台得到用户可使用的积分赋在input上,后来,用 ...

  10. android开发中提示:requires permission android.permission write_settings解决方法

    一.在Manifest.xml 中添加: <uses-permission android:name="android.permission.WRITE_CONTACTS" ...