常见链接错误

作者: 学生陈希 | 来源:发表于2016-04-18 23:52 被阅读820次

常见链接错误

阅读原文

编译链接的时候报错,算是初学者遇到的比较头疼的问题之一了。现在总结一下,在项目中遇到了链接错误。

1.“OBJC_CLASS$_xx” 错误

Undefined symbols for architecture i386:
"OBJC_CLASS$_ASIdentifierManager", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

分析:看错误提示,没有找到ASIdentifierManager这个文件,可能是我们没有倒入相关的框架,或者缺少相应的文件(头文件、实现文件等等)。

解决办法:我们需要看看工程中有没有相应的实现文件、头文件,或者看看有没有倒入相关的框架。
例如本例,缺少了相应的框架,导入AdSupport.framework ,编译成功。

2.“OBJC_CLASS$_xx” 错误

这个看起来跟第一个一样,但是我们把第一个错误中的解决办法都尝试了之后,发现还是编译不成功,这时候心中就一万匹草泥马,呼啸而过了。例如:

Undefined symbols for architecture x86_64:
"OBJC_CLASS$_PPAppPlatformKit", referenced from:
objc-class-ref in libPlugin25PP.a(IAPOnline25PP.o)
objc-class-ref in libPlugin25PP.a(PPWrapper.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

死活找不到原因,重新阅读,相关的接入文档,发现模拟器不能运行,只有真机才能运行。认真阅读接入文档很关键啊!!!

因此OBJC_CLASS$_xx” 错误,最后的解决办法,看看是否是要求只能在真机或者模拟器上才能运行。这类错误一般再介入别人的sdk的时候比较常见。

3.“duplicate symbol xx”错误

分析:字面意思,我们项目中的xx(文件名、类名、全局变量名称)有重复出现的情况。
解决办法: 仔细察看工程,删除或者修改,提示中出现的xx。
常见错误的情况:同时介入好几个sdk的时候,不同的sdkyou相同的文件名,类名,全局变量名等等。因此,制作sdk的时候,最重要的就是因该再我们的类中,文件中,统一加上前缀,防止别人使用的时候出现冲突。

duplicate symbol xx 示例

4."clang: error: -fembed-bitcode is not supported on versions of iOS prior to 6.0" 错误

解决办法:解决办法:在build setting里面设置查找“enable_bitcode”,并且改为NO

5.运行时候崩溃。“Terminating app due to uncaught exception 'NSGenericException', reason: Collection <__NSArrayM: 0x615c6a0> was mutated while being enumerated”

原因: 遍历数组的过程中对它里面的数据进行了修改,不能使用for in 或者枚举器法 遍历(可以把遍历的结果保存下来,等遍历完成之后进行修改), 因该使用for循环来进行 。即,我们在遍历数组的时候,不能对它进行修改之类的操作,不然鬼知道会发生什么事情。(我理解的大概就是这个意思)

6.在使用c++ 的string类的时候,出现链接错误:

string_link_error.png

分析:看样子是直接找不到std::string 这个用法了,在我的调用string类的方法中,说明使用的这个string库有问题。所以尝试解决一下Xcode工程中配置的c++ 的标准库.

解决办法:在当前工程的TARGET中在Build Settings搜索lib , 找到C++ Standadr Libary ,libc++(支持c++11的那一个),有时候可能是Compiler Default。然后问题完美解决!

7.Symbol not found: _ NSDictionary0 ___

Referenced from:
/private/var/mobile/Cotainers/Bundle/Applecation/xxxxxx

Expected in:
/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
in /private/var/mobile/Containers/Bundle/Applecation/xxxxx

Symbol not found.png

分析:工程中找不到相应的系统库,可能发生在工程运行在较低版本的手机系统中,会报错。

解决办法: 首先查看,工程中有没有添加CoreFoundation.frameowrk ,这个动态库,如果有的话,可以尝试把CoreFoundation.framework 的Status由Required改为Optional

未完待续,希望小伙伴们继续补充!

相关文章

  • 常见链接错误

    常见链接错误 阅读原文 编译链接的时候报错,算是初学者遇到的比较头疼的问题之一了。现在总结一下,在项目中遇到了链接...

  • 紫米讲师Ares:常用SEO名词解释

    作为一名SEOer,常见的名词必需要熟知。(这里只解释部分容易混淆的名词) 一、错误链接 错误链接和死链接并非同一...

  • 你所不知道的“seo专业名词”解释

    作为一个seoer,常见的名词必须熟知。这里主要解释一些容易混淆的seo名词 1、错误链接和死链接 错误链接和死链...

  • XCode/iOS 常见编译错误、链接错误浅谈

    楔子 俗话说使出必有因,笔者写这篇文章也是源自这两天遇到的一个具体问题。笔者公司产品新版APP提出需求,要在一富文...

  • 【链接】curl返回常见错误码

    http://www.cnblogs.com/wainiwann/p/3492939.html

  • 常见QT编程问题

    附上常见的QT问题: 一、链接路径问题 如果在调用SDK的QT编译过程中发现无法链接-l**sdk等链接错误,并出...

  • iOS "duplicate symbol"

    duplicate symbol(重复,相同的文件名)是一种常见的链接错误,不像编译错误那样可以直接定位到问题的所...

  • 链接错误

    直接上图吧 那时候我遇到这个错误,百度了很多,那时候我精力都集中在那句红色代码那其实对于这种错误,导致的问题有很多...

  • Duplicate Symbol链接错的原因总结和解决方法

    duplicate symbol是一种常见的链接错误,不像编译错误那样可以直接定位到问题的所在。但是经过一段时间的...

  • Xcode报错: linker command failed w

    duplicate symbol是一种常见的链接错误,不像编译错误那样可以直接定位到问题的所在。但是经过一段时间的...

网友评论

    本文标题:常见链接错误

    本文链接:https://www.haomeiwen.com/subject/embalttx.html