Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 其他链接器标志-ObjC引起的“;“未找到符号”;错误_Ios_Objective C_Xcode - Fatal编程技术网

Ios 其他链接器标志-ObjC引起的“;“未找到符号”;错误

Ios 其他链接器标志-ObjC引起的“;“未找到符号”;错误,ios,objective-c,xcode,Ios,Objective C,Xcode,我有一个纯Objective-C项目,其结构如下 自定义静态库链接到应用程序目标和当前扩展目标,用于共享/重用代码 静态库包含CocoaPods安装的AFNetworking库(禁用使用框架) iOS today扩展包含CocoaPods安装的Massey库(禁用使用框架) 在将砌体安装到今天扩展时,CocoaPods将-ObjC添加到我的今天扩展目标中的其他链接器标志,这将导致编译扩展目标时出现未定义符号错误 但是,如果我删除-ObjC标志,项目将成功编译,我不知道这是如何发生的。我在

我有一个纯Objective-C项目,其结构如下

  • 自定义静态库链接到应用程序目标和当前扩展目标,用于共享/重用代码
  • 静态库包含CocoaPods安装的
    AFNetworking
    库(禁用使用框架)
  • iOS today扩展包含CocoaPods安装的
    Massey
    库(禁用使用框架)
在将
砌体
安装到今天扩展时,CocoaPods将
-ObjC
添加到我的今天扩展目标中的其他链接器标志,这将导致编译扩展目标时出现
未定义符号
错误

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

使链接器加载库中包含的每个对象文件 定义Objective-C类或类别

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

这是我为重现问题而创建的测试:

项目现在将导致“Undefined symbol”编译错误,但如果删除

  • ${inherited}
  • -ObjC
来自
SimpleTodayExtension
的标志,它将编译时不会出错

虽然项目编译良好,去掉了
-ObjC
标志,但我很好奇幕后发生了什么,如果有人能教我是如何发生的,我将不胜感激,谢谢

来自
clang


这是显式命令,若并没有,编译器通常通过文件扩展名隐式地检测使用的语言。因此,如果遵循usal、*.m、*.c、*.cpp,那么一切都没问题,实际上您观察到了什么。

但是我的自定义静态库中的源文件是Objective-c,我仍然不明白这为什么会导致编译器错误?你能再解释一下吗?谢谢你的帮助!修正打字错误:*编译
-ObjC
Treat source input files as Objective-C inputs

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