iOS|iOS调试常见错误 如(symbol(s) not found for architecture x86_64)

原文出处:http://blog.csdn.NET/o_ocm/article/details/50198909

1、框架导入方式:
Targets—>Build Phases—>Link Binary With Libraries 中
点“+”导入系统的或Add Other导入外部的 ,

资源文件直接拖入左边文件夹中





2、文件路径设置:
Targets—>Build Settings—>Search Paths设置
相对路径:$(inherited) 继承
$(PROJECT_DIR) 指xxx.xcodeproj所在的父目录
$(SRCROOT) 根路径

例如:如果在Header Search Paths中添加$(SRCROOT)/scr,那么头文件引用直接引用 include “test.h”

Always search User Paths 可设为为NO,其他路径可相应设置(调试可设的包不同路径)
如果设置了 Always Search User Paths 为 yes,编译器会先搜索User Header Search Paths路径下的目录,在这种情况下include ,User Header Search Paths 搜索目录下的文件会覆盖系统的头文件



3、模拟器运行项目选择:
cocos2d支持多平台运行,模拟器选择的前一个文件需选择iOS文件





4 .dmg文件中打开的项目提示锁定:
需项目拷贝出来运行



【iOS|iOS调试常见错误 如(symbol(s) not found for architecture x86_64)】

5、Xcode7网络设置:
NSAppTransportSecurity

NSAllowsArbitraryLoads


还有一种单独设置方式按情况设置不同





6、纠正后删除左边红色文件:
最新Xcode中库后缀名".dylib"可用".tbd" ,
(正常情况)通过Finder同样找不到.dylib文件,
因该文件是隐藏文件。需按快捷键 CMD+Shift+G,
输入 /usr/lib 后进入隐藏界面,然后添加需要的.dylib即可。
删除重复导入的框架





7、链接报错:symbol(s) not found for architecture x86_64:
Xcode升级到5.1 新特性之一就是默认让所有App都通过64位编译器编译。原来在Xcode5.0.x的时候默认的Standard architectures只有(arm7,armv7s),到5.1之后默认就带上arm64的参数了。

目前临时的解决办法是
1.把1.选中Targets—>Build Settings—>Architectures。
把build active architectures only 改为 NO。

2. 把最下面的Valid Architectures中的arm64参数删掉就可以了
或者:
双击Architectures,选择other,删除$(ARCH_STANDARD),然后增加armv7和armv7s(写上:$(ARCHS_STANDARD_32_BIT))。

3.clean 再build。

(以上都不行则说明模拟器中不能调试,只能真机调试)





8、Xcode7以上真机调试步骤:
1.Xcode ->Preferences->Accounts->左下角“+”Add Apple ID
2.target->Build Phases->Code Signing->Code Signing Identity选择ios Developer,Provisioning Profile选择Automatic(有申请的也可以选择自己的证书)
3.General->Identity ->Team ->选择自己的账号 ,账号可能与其他企业等账户冲突则需重新注册
4.点击Fix Issue
5.运行





9、编码错误:You must rebuild it with bitcode enabled
(Xcode setting ENABLE_BITCODE) :
Targets—>Build Settings—>Build Options->Enable Bitcode 设置为NO





10、真机运行崩溃错误:dyld`dyld_fatal_error:
0x2be810c4:trap
0x2be810c8:nop:
尝试:
1.将CFNetwork框架后面改成可选的Optionnal,可能是网络请求问题
2.把foundation框架放到CFNetwork框架上面
3.查看控制台输出的内容,提示没有加载资源,则可能需在 General->Embedded Bnaries中导入需要的框架





11、"_GCControllerDidConnectNotification", referenced from:
-[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2dx iOS.a(CCController-iOS.o)
"_OBJC_CLASS_$_GCController", referenced from:
objc-class-ref in libcocos2dx iOS.a(CCController-iOS.o)
(maybe you meant: _OBJC_CLASS_$_GCControllerConnectionEventHandler)
ld: symbol(s) not found for architecture armv7s
BuildSettings -> Build Phase -> Link Binary with libraries
加入:
MediaPlayer.framework
GameController.framework





12、两个静态库冲突:
删除掉 Other Linker Flag 的 -all_load
如果是有些库使用到了扩展函数(catagory)可以分别对这个库进行加载
使用:-force_load
-force_loadbuild/libs/libxx.a
(build是添加到当前目录下的)

-force_load $(BUILT_PRODUCTS_DIR)/libxx.a
(这里是直接添加静态库项目源码的做法)




13、"_ExtAudioFileSetProperty", referenced from:
_CDloadCafAudioData in libcocos2dx.a(CDOpenALSupport.o)
"_ExtAudioFileRead", referenced from:
_CDloadCafAudioData in libcocos2dx.a(CDOpenALSupport.o)
"_AudioFileReadBytes", referenced from:
_CDloadWaveAudioData in libcocos2dx.a(CDOpenALSupport.o)
"_ExtAudioFileDispose", referenced from:
_CDloadCafAudioData in libcocos2dx.a(CDOpenALSupport.o)
"_AudioFileOpenURL", referenced from:
_CDloadWaveAudioData in libcocos2dx.a(CDOpenALSupport.o)
BuildSettings -> Build Phase -> Link Binary with libraries
加入:
AudioToolbox.framework(播放或录音库)



14、运行时出现的证书问题:
App installation failed
a vaild provsioning profile for this executable was not found

检查:
1、安装证书是否重新导入(证书最好重新安装一下)
2、调试手机是否已授权
3、确认xcode选择的调试证书是否正确,team选择是否正确
4、设置的bundle identifier是否符合证书的命名规则



15、真机调试[UISreen mainScreen].bounds 得到的大小与实际手机的屏幕大小不一致
1、查看手机是否设置为放大模式(iPhone6及上)
2、启动图片设置问题,Lanuch Screen File选择Don't use asset catalogs,然后找到启动图片文件夹删除,再重新打开启动图,找到启动图将图片拖入启动图对应区域再运行即可。

    推荐阅读