XCode14编译的Framework,在XCode13上报错

在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
添加位置如下:

image.png

添加后可以发现,framework包明显增大;Xcode13可以成功对项目进行编译;

问题:这个framework的项目,就没有办法在Xcode13上面编译通过了,会提示没有-fno-objc-msgsend-selector-stubs

完结。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容