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

时间:2012-02-23 00:05:46

标签: objective-c xcode linker compiler-errors

我的问题

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

设置

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

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

用于测试中使用的许多类。

我尝试过什么

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

4 个答案:

答案 0 :(得分:13)

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

_OBJC_CLASS_$_MyClass

问题是我已为@interface宣布了MyClass,但未声明其对应的@implementation

修复只是添加

@implementation MyClass
@end

答案 1 :(得分:11)

快速回答

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

GCC_SYMBOLS_PRIVATE_EXTERN = NO

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

我已经有这个问题开启和关闭了好几个月,我刚刚发现了原因。

答案 2 :(得分:2)

不确定这是否可能是问题,但是对于新的编译器,任何未明确引用/调用的obj-c都不会从库链接。例如,当您在库中实现类别时,这会导致问题。

尝试在目标的构建设置面板中将“-ObjC”添加到“其他链接器标记”。 耸肩

答案 3 :(得分:0)

引用自objc_class_ $ textfieldvalidator

编译不将那些复制的文件包括在其编译列表中。解决此错误 选择文件或文件夹,然后转到“构建阶段”面板,打开“编译源”步骤,然后单击+按钮并将它们添加到所有文件或文件夹。

右键单击项目文件夹,单击“将文件添加到...”,选择文件,然后单击“选项”按钮并选择目标,然后单击“添加”。