hg888皇冠手机登录

iOS特出错误Undefined symbols for architecture XXX:

十一月 23rd, 2019  |  www.hg888.com

duplicate symbol _OBJC_IVAR_$相仿报错,objcivar

 1、重复增添有些文件。解决办法:搜索工程,删除多余的文书;
 2、文件增多援引错误,即后缀 .m  误写为  .h 
。化解办法:更正,编写翻译通过。

图片 1

symbol
_OBJC_IVAR_$相仿报错,objcivar
1、重复增加某些文件。解决办法:寻觅工程,删除多余的文书;
2、文件加多援用错误,即后缀…

案由之四:Compile Sources中一贯不拉长对应的.m文件而报错

一时,大家项目中并未以静态库的花样引用第三方库,而是一向动用的三方源码。也可能有希望现身相通的失实。如下图:项目中以源码的花样引用了react
native。某一遍实行了git
pull命令后,再编写翻译项目,就应际而生了下边这几个错误。其意为:RCTSegmentedControlManager.m文件引用了RCTSegmentedControl文件,可是找不到RCTSegmentedControl.m那个文件(.h文件是不插手编写翻译的卡塔尔。同理,RCTScrollView.m文件和RCTRefreshControlManager.m文件中引用了RCTRefreshControl.m文件,不过也找不到RCTRefreshControl.m文件。

图片 2图片.png

于是,大家去Build Phases -> Compile
Sources中寻找RCTRefreshControl可能RCTSegmentedControl,确实并未有找到呼应的.m文件。如下图1和图2:

图片 3图1图片 4图2

于是乎,把那多少个.m文件加进去,如下图1和图2:

图片 5图1图片 6图2

末尾,再一次command + Odyssey,编写翻译通过!综上,如若某些.m文件未有被增多在Compile
Sources中,那么那一个.m文件就不会加入编写翻译,引致其余文件援引该文件时,就能报错:
Undefined symbols for architecture XXX:
消除办法,正是把那几个.m文件加多到Compile Sources中。

文/VV木公子PS:如非极度表明,全部文章均为原创文章,作品权归我全数,转发请联系小编获得授权,并注解出处,全数打赏均归笔者持有!

生龙活虎经你是iOS开辟者,或许对本篇文章感兴趣,请关怀作者,后续会更新越来越多相关作品!敬请期望!

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

删除里面包车型大巴不二秘籍

复原项目

因为刚刚删除了libMobClickLibrary.a文件,大家要想让项目方可过来到宏观编写翻译运转的景观,需求在Linked
Frameworks and Libraries 增多libMobClickLibrary.a库,如下图:

因为是第三方库,不是系统提供的库,所以须要到我们自个儿的目录中增加:如下图显示了丰富步骤:

图片 7第一步:点击加多图片 8第二步:点击Add
Other图片 9其三步:选中静态库点击open

现今,缺点和失误的静态库已经被链接进工程中,再一次编写翻译项目就不会报那个错误。当然,要是还报形似错误,表达您的门类中还亟需链接其余的静态库,链接方法相符。

错误中现身了“MyPageLogViewController”这一个类,你能够找到那么些类的.m文件,
查看她的Target Membeship;

objc-class-ref in BaiduMobStatAppDelegate.o

缘由之生机勃勃:未有链接lib库而报错

lib是library的意趣,lib库就是指后缀名称为.a的静态库。 删除General ->
Linked Frameworks and Libraries
下的libMobClickLibrary.a。如下图分别是去除前和删除后的周旋统生龙活虎:

删除前:

图片 10那时链接了静态库

删除后:

图片 11此刻不再链接静态库

再度真机编译项目,我们就能够如愿的观看五个经典的的错误
OBJC_CLASS$_MobClick”, referenced from: 和 linker command failed
with exit code 1 (use -v to see invocation),点击第一个错误,如下图:

图片 12Snip20161219_11.png

下一场见到 Undefined symbols for architecture arm64:

图片 13Snip20161219_4.png

可是大家怎么了然是绝非链接libMobClickLibrary.a库并非别的的什么库呢?那还要决议于这句"_OBJC_CLASS_$_MobClick", referenced from:。其中_OBJC_CLASS_$_MobClick中的MobClick便是大家援引的libMobClickLibrary.a中的叁个文书。因为本人确实是在AliyunSalesCustomerListTableViewManager.m中通过#import "MobClick.h"引用了MobClick.h,如下图:

图片 14Snip20161219_12.png

当然,如若我们引用了libMobClickLibrary.a库中的别的文件,那么OBJC_CLASS$_后边就不是MobClick了,这么些大家应该是很好领会的。

局地时候,因为前边的类名跟第三方的库名未有其余日常处,比如库名称叫做libAAA.a,而报错的类名却是BBB。那时候,大家透过后边的类名根本无法正确的剖断出这几个BBB归于哪个库,也就不知道该链接哪个库。这种意况下,大家得以经过referenced
from:提醒后边的文本名来剖断BBB到底归于哪个静态库,因为我们自个儿的某部类公事不太或者import相当多第三方的库,这种地方下,采取这种方法相比较好推断。

总结:综上,大家能够:项目中如果用到了有些第三方静态库,但lib静态库也许framework静态库未有被链接时,就能够遇上Undefined
symbols for architecture XXX那风度翩翩类的失实。**
原因:**编写翻译项目时,因为静态库未有链接进工程,所以静态库就不会参与编写翻译,而项目有些文件又引述了静态库,所以本来会报错,而报的错就是杰出的
Undefined symbols for architecture
XXX这生龙活虎类的荒谬。解决方案:下一次遇上那类难点,大家只要求在Linked
Frameworks and Libraries 中足够内定的静态库就能够!

9.大概您导入的SDK只好在真机下工夫运作,模拟器会报错!

(maybe you meant: _OBJC_CLASS_$_BaiduMobStatAppDelegate)

原因之三:extern引用不设有的全局变量而报错

支出中,大家很有超大希望用到全局变量,举例在delegate.m文件中定义了二个int
型全局变量globalVar,在ViewController.m文件中通过extern int globalVar;
而引用A.m文件的这一个全局变量。那样是没难题。不过固然我们比相当的大心把extern int globalVar
写成
extern int globalVariate,且在ViewController.m文件中应用了那么些globalVariate变量。

#import "AppDelegate.h"@interface AppDelegate ()@end@implementation AppDelegateint globalVar; // 生命一个全局变量- application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES;}

#import "ViewController.h"@interface ViewController ()@end@implementation ViewControllerextern int globalVariate; // 引用一个不存在的全局变量- viewDidLoad { [super viewDidLoad]; globalVariate = 10; // 给不存在的全局变量赋值}@end

编译上面代码也会报同样的荒诞,如下图:

图片 15

点击错误查看详细情形,如下图:

图片 16

原因:因为extern int
globalVariate并从未定义名称叫globalVariate的变量,而是引用了五个名字叫做globalVariate的全局变量。当我们运用globalVariate时候,系统开掘那几个变量根本没有定义,就能报这几个错误。

因此淹无法是把贯彻的多少个函数单出二个.c文件里去。那样就ok了。

依次 Project -> targets -> Build Setting -> Framework Search
Paths

首先评释

因为本人是在真机上编写翻译的项目,所以报错的架构为arm64。

  • 如若我们选取陆十六位模拟器(小米 simulators 5s
    或更加高版本卡塔 尔(阿拉伯语:قطر‎编写翻译恐怕运维品种,就能够报以下错误:

    • Undefined symbols for architecture x86_64:
  • 若是我们选取30位模拟器(华为 simulators 5
    或更低版本卡塔 尔(英语:State of Qatar)编写翻译也许运营项目,就可以报以下错误:

    • Undefined symbols for architecture i386:

Undefined symbols for architecture
XXX:相同的谬误是二个支付中不经常蒙受的标题,凡是涉及到第三方静态库的档期的顺序,都不可避免的遭受过那生机勃勃类错误。为了印证错误的来头和加强对消除方案的领会。作者利用了故意复现难点的方法来申明难点的技术方案:即:故意给工程进展不当的布局可能去除有个别配置,使工程编写翻译不经过,然后记下编译器报的大错特错,验证什么动静下会报这种错。首先证明,小编的工程中援用(并非通过cocoapods引用卡塔尔了友盟的总结SDK,名为作libMobClickLibrary.a。存款和储蓄在工程的third_party目录下,如下图:

图片 17静态库目录

need-to-insert-img

谬误中冒出了“MyPageLogViewController”这么些类,你可以找到那些类的.m文件,
查看他的Target Membeship, 如下图

原因之二:未有链接.framework静态库而报错

下边表明了工程中因为缺乏链接lib库招致报错的后生可畏种状态。iOS开发中有三种格式的静态库(.a格式和.framework格式卡塔尔。所以,我们也轻便猜想:缺乏链接.framework格式的静态库也会形成同样的大错特错。如果大家引用的第三方库并不是.a格式的静态库,而是.framework格式的静态库,在Linked
Frameworks and
Libraries中从不被链接的意况下,也会报相近的不当。例如本人在Linked
Frameworks and Libraries 中删除
PushCenterSDK.framework静态库(这一个静态仓库储存在于木纹中,不是cocoapods管理的),如下图:在Linked
Frameworks and Libraries中去除PushCenterSDK.framework

图片 18删除.framework静态库

模拟器编译项目,现身以下八个谬误:

图片 19因为缺少链接的静态库所以编写翻译现身错误

点击第五个谬误,查看错误详细的情况,如下图:

图片 20谬误详细情况

意识:尽管缺点和失误链接.framework格式的静态库,也会报相仿的乖谬,所以,不管大家贫乏链接的是.a静态库如故.framework静态库,只要在Link
Frameworks and Libraries
中向来不精确链接进去,都会报相同的大谬不然,即:Undefined symbols for
architecture XXX:。

值得注意的是,此处报了多个谬误,原因在于,YunFuPushCenter.m文件中援用了PushCenterSDK.framework的四个文件,所以会多报贰个不当,这么些是相比好精通的:

图片 21援用了framework中的五个公文

7.”Build Settings”->”Enable Bitcode”设置为NO
,因为稍微SDK不补助Bitcode

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

     (maybe you meant: _OBJC_CLASS_$_BaiduMobStatAppDelegate)  

“_OBJC_CLASS_$_BaiduMobStat”, referenced from:

去除里面包车型地铁门径

库路线错误的状态:

情景5、 很奇葩的动静啊,就是援用第三方的静态库.a 出现了难点.
在模拟器和真机引进的静态库是分手的!!!当然假使您的静态库做成了统少年老成的,那就不会现出气象5.

荒唐如下,那象征是查询Library的时候现身的不胜。

库路线错误的景况:

1、Framework Search Paths

6.工程粤语件名重复了 也会产出同等的谬误

图片 22

张冠李戴如下, 那象征是查询Framework的时候现身的分外。

解决措施:Build settings->Search 帕特h->Library Search 帕特hs
 增多静态库的附和路线。

8.恐怕在援用的时候 只怕写的是#import “XXXXX.m” ,假诺是改为#import
“XXXXX.h” 

“directory not found for option ‘-L/…”

5.大概再一次增添了文件(也说不许没勾选 Copy items if neded
这几个选项卡塔尔国,提议删除后再行增多

6.工程中文件名重复了 也汇合世同样的大错特错

情况1

消除方法:

消除情势:Build settings->Search Path->Library Search
Paths  增加静态库的照顾路线。

Undefined symbols for architecture armv7:

need-to-insert-img

以如下错误为例,通过cocoa Pods安装AFNetworking后, 现身如下的不当。

缓和方式:

该意况为和工程中的文件同名, 因为在经过cocoa Pods安装AFNetworking前,
已经增加了该框架. 完全除去此前的, 工程运维.

标签:, , , , , ,

Your Comments

近期评论

    功能


    网站地图xml地图