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

遇到问题如图:这是在使用 Cornerstone 的时候同事在一个我不编译的文件里面写了几个 Controller, 然后我做 update 的时候,重新编译遇到的问题

F5BA25A3-F4D3-4626-AAEA-D2B434CEFF2B.png

p.p1 {margin: 0.0px 0.0px 0.0px 12.0px; text-indent: -12.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 12.0px; text-indent: -12.0px; font: 11.0px Menlo; min-height: 13.0px}

"OBJC_CLASS$_LJCModifyTrackingViewController", referenced from:
p.p1 {margin: 0.0px 0.0px 0.0px 12.0px; text-indent: -12.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 12.0px; text-indent: -12.0px; font: 11.0px Menlo; min-height: 13.0px}

  objc-class-ref in DJMembersViewController.o

ld: symbol(s) not found for architecture x86_64

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

查阅了资料后发现原来是这个文件没交给 target 编译

解决办法:1.笨办法:~/Library/Developer/Xcode/DerivedData 关掉xcode,删掉DerivedData这个文件夹里的全部东西 然后重新打开项目clean>build

2.找到这个文件LJCModifyTrackingViewController在 Xcode 工程里面选中,看右边的编译栏的书页界面有一个 Target Membership 的选项 把里面你的项目名字那个文件前面框选中,再次 Clean 之后编译就行了

屏幕快照 2016-11-29 上午9.54.57.png
屏幕快照 2016-11-29 上午9.55.23.png

遇到问题2:在同事上传了代码后,我这边下拉之后的内容不能再 Xcode 的编译文件里面看到,但是用 finder 能找到该文件,报错同样是这样的 x86_64问题,解决方法:在每个文件夹那里用 show finder 方法把该文件路径下的文件找到,拉到程序中,这样等于是给 Xcode 说明这个文件的路径是在这里(这种错误的原因就是你的文件存在,但是编译文件里面没有该文件的路径信息)

最后补充一下看到的资料:
architecture x86_64 类似问题可能产生的原因
1.新建类,未参加 Target 编译(与我的问题一模一样)

2.检查 targets --> build phases --> Compile Sources 中是否缺少 .m 文件

3.检查 targets --> build phases --> link binary with libraries 是否缺少依赖库

4.有些三方库可能需要导入libz.dylib

5.检查库文件导入的路径不对或不存在,targets --> building setting --> search paths路径

6.检查三方库是否重复导入

6.-fno-objc-arc 的问题,检查下文件编译环境

bug的解决要具体情况具体分析,随机应变。
(如有错误,欢迎各位指正! ^ ^ )

Xcode5老版本解决方案链接:http://www.jianshu.com/p/05f84034e4f6

推荐阅读更多精彩内容