xxx referenced from: xxx in xxx.o

本文介绍了三种常见iOS项目编译时出现undefined symbols错误的原因及解决办法:1. 源码文件未加入工程;2. 缺少必要的framework;3. 工程中重复添加了相同的文件。

情形一:可能是有一些源码文件没有加入工程所导致的,找到相应的.h和.m文件,将其add进入项目工程即可解决这种问题。


情形二:也有可能是某些framework没有加入项目中,


示例:
   Undefined symbols for architecture armv7:
   "_OBJC_CLASS_$_MFMessageComposeViewController", referenced from:
   l_OBJC_$_CATEGORY_MFMessageComposeViewController_$_BlocksKit in BlocksKit(BlocksKit)
原因:
这是编译器找不到符号定义,通常这意味着某些framework没有加入项目中
解决参考:
解读信息,是因为找不到叫MFMessageComposeViewController的ObjC类。
查找MFMessageComposeViewController的信息,得知其定义在MessageUI.framework中,将其加入到项目中即可


情形三:有可能是工程中重复"add"了相同的.m或.h或.cpp文件,就是工程编译时找到了两个相同的文件有可能会导致这种报错。

07-27 07:12:45.574 5050 5050 W ziparchive: Unable to open '/system/priv-app/SystemUI/SystemUI.apk': No such file or directory 07-27 07:12:45.575 5050 5050 E ndroid.systemu: Failed to open APK '/system/priv-app/SystemUI/SystemUI.apk' I/O error 07-27 07:12:45.576 5050 5050 E ResourcesManager: failed to add asset path /system/priv-app/SystemUI/SystemUI.apk 07-27 07:12:45.577 5050 5050 D AndroidRuntime: Shutting down VM 07-27 07:12:45.580 5050 5050 E AndroidRuntime: FATAL EXCEPTION: main 07-27 07:12:45.580 5050 5050 E AndroidRuntime: Process: com.android.systemui, PID: 5050 07-27 07:12:45.580 5050 5050 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Configuration android.content.res.Resources.getConfiguration()' on a null object reference 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.app.ActivityThread.updateLocaleListFromAppContext(ActivityThread.java:5570) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5799) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.app.ActivityThread.access$1100(ActivityThread.java:200) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-27 07:12:45.580 5050 5050 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 07-27 07:12:45.592 442 1867 V RescueParty: Disabled because of active USB connection 07-27 07:12:45.593 442 1867 W ActivityManager: Process com.android.systemui has crashed too many times: killing! 07-27 07:12:45.619 5050 5050 I Process : Sending signal. PID: 5050 SIG: 9 07-27 07:12:45.655 442 2025 I ActivityManager: Process com.android.systemui (pid 5050) has died: pers PER 07-27 07:12:45.655 442 486 W libprocessgroup: kill(-5050, 9) failed: No such process 07-27 07:12:45.655 442 486 I libprocessgroup: Successfully killed process cgroup uid 10024 pid 5050 in 0ms 07-27 07:12:45.656 226 226 I Zygote : Process 5050 exited due to signal (9) 07-27 07:12:45.656 442 2025 W ActivityManager: Scheduling restart of crashed service com.android.systemui/.SystemUIService in 0ms 07-27 07:12:45.656 442 2025 W ActivityManager: Scheduling restart of crashed service com.android.systemui/.keyguard.KeyguardService in 0ms 07-27 07:12:45.656 442 2025 W ActivityManager: Scheduling restart of crashed service com.android.systemui/com.android.zhkj.ZhkjService in 0ms 07-27 07:12:45.660 442 2025 W ActivityManager: Re-adding persistent process ProcessRecord{58aa8e 5050:com.android.systemui/u0a24} 07-27 07:12:45.692 5066 5066 I Zygote : seccomp disabled by setenforce 0 07-27 07:12:45.692 442 485 I ActivityManager: Start proc 5066:com.android.systemui/u0a24 for restart com.android.systemui 07-27 07:12:45.753 5066 5066 W System : ClassLoader referenced unknown path: /system/priv-app/SystemUI/SystemUI.apk 07-27 07:12:45.761 5066 5066 E LoadedApk: Unable to instantiate appComponentFactory 07-27 07:12:45.761 5066 5066 E LoadedApk: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/system/priv-app/SystemUI/lib/arm, /system/lib, /system/lib]] 07-27 07:12:45.761 5066 5066 E LoadedApk: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) 07-27 07:12:45.761 5066 5066 E LoadedApk: at java.lang.ClassLoader.loadClass(ClassLoader.java:379) 07-27 07:12:45.761 5066 5066 E LoadedApk: at java.lang.ClassLoader.loadClass(ClassLoader.java:312) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.LoadedApk.createAppFactory(LoadedApk.java:226) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:731) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.LoadedApk.getClassLoader(LoadedApk.java:810) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.LoadedApk.getResources(LoadedApk.java:1032) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.ContextImpl.createAppContext(ContextImpl.java:2345) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5798) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.ActivityThread.access$1100(ActivityThread.java:200) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.os.Handler.dispatchMessage(Handler.java:106) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.os.Looper.loop(Looper.java:193) 07-27 07:12:45.761 5066 5066 E LoadedApk: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-27 07:12:45.761 5066 5066 E LoadedApk: at java.lang.reflect.Method.invoke(Native Method) 07-27 07:12:45.761 5066 5066 E LoadedApk: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-27 07:12:45.761 5066 5066 E LoadedApk: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 分析
07-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值