首页 > 解决方案 > 其他链接器标志 -ObjC 导致“找不到符号”错误

问题描述

我有一个像这样结构的纯Objective-C项目

在安装Masonry到今天的扩展时,CocoaPods-ObjC在我的今天的扩展目标中添加了 Other Linker Flag,这会导致Undefined symbol编译扩展目标时出错。

在此处输入图像描述

但是,如果我删除-ObjC标志,项目将成功编译,我不知道这是怎么发生的。我在互联网上搜索过,我唯一知道的是-ObjC国旗会

使链接器加载定义了 Objective-C 类或类别的库中的每个目标文件

但我不知道为什么这种行为最终会导致编译错误。

这是我为重现该问题而创建的测试计划:https ://github.com/JohnnyTseng/SimpleProject

该项目现在将导致“未定义符号”编译错误,但如果您删除

的标志SimpleTodayExtension,它将编译没有错误

在此处输入图像描述

尽管该项目在-ObjC删除标志后编译良好,但我很好奇幕后发生了什么,如果有人能告诉我它是如何发生的,将不胜感激,谢谢!

标签: iosobjective-cxcode

解决方案


clang 文档

-ObjC
Treat source input files as Objective-C inputs

-ObjC++
Treat source input files as Objective-C++ inputs

这是显式命令,如果它们不存在,编译器会隐式检测使用的语言,通常通过文件扩展名。因此,如果像往常一样遵循*.m、*.c、*.cpp,那么一切都很好,你实际观察到的是什么。


推荐阅读