当我正确链接框架时,为什么会收到"_OBJC_CLASS _ $ ...,引自:"链接器错误?

Joh*_*her 10 xcode linker compiler-errors objective-c

我的问题

我在编译一些Xcode项目时遇到了"_OBJC_CLASS _ $ ...,引用自:"链接器错误(它发生在iOS和Mac项目中)我已正确链接框架和导入.

建立

  • 一个应用目标
  • 一个测试目标
  • 所有框架都正确链接

在编译时,我得到以下链接器错误:"_ OBJC_CLASS _ $ _ JGCountdownTimer",引自:JGCountdownTimerTestCase.o中的objc-class-ref

对于测试中使用的许多类.

我试过的

  • 检查进口是否全部存在
  • 删除了所有非标准框架
  • 如果我为测试目标和应用程序目标编译一个类,它就可以解决问题.但后来我从编译器得到了其他警告.

W.K*_*K.S 14

我遇到了类似的问题.我收到了链接器错误:

_OBJC_CLASS_$_MyClass

问题是,我宣布一个@interfaceMyClass,但其对应的尚未宣布@implementation.

修复是简单地添加

@implementation MyClass
@end
Run Code Online (Sandbox Code Playgroud)


Joh*_*her 12

快速回答

将以下行复制并粘贴到您的构建设置中:

GCC_SYMBOLS_PRIVATE_EXTERN = NO

在目标构建设置中查找"默认隐藏的符号".对于Debug配置,您需要"No".

几个月来我一直都有这个问题,我刚刚发现了原因.

  • 在构建设置中粘贴GCC的东西? (14认同)
  • 您也可以在@interface前面加上__attribute __((visibility(“ default”))))。 (2认同)
  • 当我搜索GCC_SYMBOLS_PRIVATE_EXTERN时,我得到默认隐藏的符号,这已经设置为否.任何其他解决方案? (2认同)