Xcode 中架构 arm64 的未定义符号

问题描述

我有一个框架 Xcode 项目 A,以及一个使用 A 的框架二进制文件的应用程序 Xcode 项目 B。

当我尝试在我的应用程序中实例化框架的对象时,它给了我这个链接错误

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_MyClass",referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture arm64

我的框架是 arm64,我用 lipo -info 验证。

符号 _OBJC_CLASS_$_MyClass 在框架中,我用 nm mylib | grep MyClass 验证过

我不明白怎么可能找不到这个符号。

这可能是什么原因?任何帮助将不胜感激,非常感谢..

解决方法

我通过在构建设置中将 Symbols Hidden by Default 设置为 No 解决了我的问题。

或者,如果我想保留该选项并隐藏所有其他符号,我也可以在我的班级前面添加 __attribute__ ((visibility("default")))