在XCode14上编辑的库,在集中构建时编译过不去,
"_objc_msgSend$show", referenced from:
-[iConsoleWindow sendEvent:] in Utility(iConsole.o)
-[iConsoleWindow motionEnded:withEvent:] in Utility(iConsole.o)
"_objc_msgSend$synchronize", referenced from:
-[iConsole saveSettings] in Utility(iConsole.o)
-[iConsole initWithNibName:bundle:] in Utility(iConsole.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
根据报错信息分析,ld: symbol(s) not found for architecture arm64
,本以为是架构问题,但是经过检查,架构是没问题的
。
。
。
其他排查过程不表
说下结论,
XCode14 的clang增加了一个新的特性关于msgSend的,而不向下兼容,所以在Xcode13上面报错了。
解决方式:在framework的buildSetting里面,增加-fno-objc-msgsend-selector-stubs
,
添加位置如下:
添加后可以发现,framework包明显增大;Xcode13可以成功对项目进行编译;
问题:这个framework的项目,就没有办法在Xcode13上面编译通过了,会提示没有
-fno-objc-msgsend-selector-stubs
。
完结。
网友评论