XCODE:<iOS>other linker flags

在工程中导入XMPP第三库时,出现link错误,错误如下:

Undefined symbols for architecture i386:

"_iconv", referenced from:

_mem_cd_iconv in libidn.a(striconv.o)

_str_cd_iconv in libidn.a(striconv.o)

(maybe you meant: _str_iconv, _str_cd_iconv , _mem_cd_iconv )

"_iconv_close", referenced from:

_str_iconv in libidn.a(striconv.o)

"_iconv_open", referenced from:

_str_iconv in libidn.a(striconv.o)

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

起初我以为是路径问题,库文件没导好。但是反复检查发现,不是这样的。libidn.a这个静态库已经在Link Binary With Libraries里。在网上查了很久的资料,最后在中午的时候想到other linker flags这个参数设置,于是找到发现这个参数设置是-all-load,将它删除后,再运行无错误,问题解决。下午就查了些关于这个参数的一些资料。

包含静态库时候需要在Target的Other linker flags里面加上值:-objC,-all_load,-force_load 对于64位机子和iPhone OS应用 解决方法是使用-all_load 或者 -force_load。 -all_load强迫链接器从它能看见的所有文档中加载所有的对象文件,甚至那些没有OC代码的文档。 -force_load适用于Xcode3.2+版本,它允许finer得到文档加载的控制。每一个-force_load操作必须跟着一个文档路径,文档中的每一个对象文件将会被加载。 -all_load就是会加载静态库文件中的所有成员, -ObjC就是会加载静态库文件中实现一个类或者分类的所有成员, -force_load(包的路径)就是会加载指定路径的静态库文件中的所有成员。 举个例子 当链接一个包含类别的OC静态库时候,将会得到一个运行时异常:"selector not recognized"。你需要设置Other Linker Flags的值为-ObjC就OK了

时间: 2024-10-12 04:41:15

XCODE:<iOS>other linker flags的相关文章

iOS other linker flags

我是写swift项目的,引入了腾讯云视频的SDK,录制视频,播放视频都正常,但是一点击上传视频,app就crash掉了. 当时项目是在Xcode7下运行,报的错就一句话: libc++abi.dylib: terminating with uncaught exception of type NSException . 只有这句话,在没有任何详细的报错信息下,我把代码断点后,也一直发现不了原因.跟腾讯的技术支持交流,那个人他说他也是第一次见这种错误,最后说可能是oc与swift混编的问题,叫我用

关于Xcode的Other Linker Flags

背景 在ios开发过程中,有时候会用到第三方的静态库(.a文件),然后导入后发现编译正常但运行时会出现selector not recognized的错误,从而导致app闪退.接着仔细阅读库文件的说明文档,你可能会在文档中发现诸如在Other Linker Flags中加入-ObjC或者-all_load这样的解决方法. 那么,Other Linker Flags到底是用来干什么的呢?还有-ObjC和-all_load到底发挥了什么作用呢? 链接器 首先,要说明一下Other Linker Fl

&lt;iOS&gt;关于Xcode上的Other linker flags

<iOS>关于Xcode上的Other linker flags Targets选项下有Other linker flags的设置,用来填写XCode的链接器参数,如:-ObjC -all_load -force_load等.还记得我们在学习C程序的时候,从C代码到可执行文件经历的步骤是:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 > 可执行文件在最后一步需要把.o文件和C语言运行库链接起来,这时候需要用到ld命令.源文件经过一系列

iOS 关于Xcode上的Other linker flags

博客来源  http://www.cnblogs.com/robinkey/archive/2013/05/27/3101095.html Targets选项下有Other linker flags的设置,用来填写XCode的链接器参数,如:-ObjC -all_load -force_load等.还记得我们在学习C程序的时候,从C代码到可执行文件经历的步骤是:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 > 可执行文件在最后一步需要把.o文件和

【三分钟视频教程】iOS开发中 Xcode 报 apple-o linker 错误的#解决方案#

[三分钟视频教程]iOS开发中 Xcode 报 apple-o linker 错误的#解决方案# [三分钟视频教程]iOS开发中 Xcode 报 apple-o linker 错误的#解决方案#,布布扣,bubuko.com

xcode:关于Other Linker Flags

http://blog.csdn.net/tammy_min/article/details/12854595 三.主要参数 这里要说的主要参数是ld工具的参数,也是在Other Linker Flags里常用到的参数. 1.-ObjC 当使用ObjC写的静态类别库(Objective-C static library that contains categories),在程序编译链接时,如果不在Other Linker Flags中填写-ObjC,往往会报错,出现"selector not r

关于Xcode上的Other linker flags

一.问题说明 之前下了一个第三方的静态库.a,然后在运行时一直提示 2015-06-14 15:38:33.135 BRTExample[5890:695264] -[CBUUID toString]: unrecognized selector sent to instance 0x1742281c0 2015-06-14 15:38:33.135 BRTExample[5890:695264] *** Terminating app due to uncaught exception 'NS

Xcode 编辑器之关于Other Linker Flags相关问题

一,概述 问题场景一 当从网上去下载一些之前的完整的项目的时候,用终端也 pod update了,但一运行,熟悉的linker错误就出来了. 解决办法 在Other Linker Flags(也即 OTHER_LDFLAGS)中添加$(inherited). 在Header/Framework Search Paths(也即HEADER_SEARCH_PATHS和FRAMEWORK_SEARCH_PATHS) 添加$(PODS_ROOT)/Headers. 问题场景二 当从网上下载第三方类库拉到

Other Linker Flags

原文出自:http://alloc.sinaapp.com/wp/?p=272 一.关于Other Linker Flags xcode中,在“Targets”选项下有Other Linker Flags选项,在这里可以填写xcode链接器的参数,如:-ObjC.-all_load.-force_load等. 二.xcode链接器 xcode采用的链接器为ld–GNU,ld是GNU工具链中的一个软件,主要用于将obj文件连接成可执行文件.同时你能使用自己的脚本来控制ld的行为,这是你可以通过-T