当将特定的 iOS 应用程序项目链接到静态框架时,Xcode 会报告单个静态框架文件中的重复符号错误(尽管报告的重复符号来自该框架中的不同目标文件):
duplicate symbol _kMGLMinimalViewport in:
/Users/alex/Documents/Code/MyProject/ThirdParty/MetalGL-0.9.0/MetalGL/MetalGL.framework/MetalGL(MGLContext.o)
/Users/alex/Documents/Code/MyProject/ThirdParty/MetalGL-0.9.0/MetalGL/MetalGL.framework/MetalGL(MGLRenderPipelineState.o)
被报告为重复的_kMGLMinimalViewport
符号是在框架源代码的头文件中声明和定义的结构:
MGLPixelRect kMGLMinimalViewport = (MGLPixelRect){0, 0, 0, 0};
然后将其#import
编辑到框架源代码中的几个实现文件中,包括.m
其他文件中的文件和内联函数.h
。该符号在框架内部严格使用,并且作为可见头文件的一部分,最终应用程序项目甚至看不到声明。
令人困惑的是,将此框架链接到其他应用程序项目时不会出现此重复错误,但我找不到此特定应用程序项目在链接此框架时报告错误的任何原因。