Ios 链接单个框架静态库时Xcode报告重复符号错误

Ios 链接单个框架静态库时Xcode报告重复符号错误,ios,xcode,frameworks,static-linking,duplicate-symbol,Ios,Xcode,Frameworks,Static Linking,Duplicate Symbol,将特定iOS应用程序项目链接到静态框架时,Xcode会报告单个静态框架文件中的重复符号错误(尽管报告的重复项来自该框架中的不同对象文件): 报告为重复的\u KMGL>符号是在框架源代码的头文件中声明和定义的结构: duplicate symbol _kMGLMinimalViewport in: /Users/alex/Documents/Code/MyProject/ThirdParty/MetalGL-0.9.0/MetalGL/MetalGL.framework/MetalGL(MGLC

将特定iOS应用程序项目链接到静态框架时,Xcode会报告单个静态框架文件中的重复符号错误(尽管报告的重复项来自该框架中的不同对象文件):

报告为重复的
\u KMGL>符号是在框架源代码的头文件中声明和定义的结构:

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)
MGLPixelRect kMGLMinimalViewport = (MGLPixelRect){0, 0, 0, 0};
然后将其导入框架源代码中的几个实现文件,包括
.m
文件和其他
.h
文件中的内联函数。该符号严格地在框架内部使用,并且声明作为可见头文件的一部分对最终的应用程序项目甚至都不可见


令人困惑的是,将此框架链接到其他应用程序项目时不会出现此重复错误,但我找不到此特定应用程序项目在链接此框架时报告错误的任何原因。

Bil如何导入它?其他应用程序与此特定应用程序之间有什么区别?您是否尝试删除并再次导入它?清理(同时删除派生数据)并再次导入(第一步将其导入一个目标)。结果表明,导致此问题的“应用程序”实际上是一个链接到预编译静态框架的动态框架。我通过在静态框架中隐藏所有非公共符号解决了这个问题。这是通过使用uuu属性uuu((可见性(“默认”))标记公开的符号来完成的,然后使用GCC_u符号u私有u外部编译器设置来隐藏所有其他内容。嗨,比尔。我也有这样的问题与重复符号与MetalGL。能否请您提供更详细的答案如何修复它。我们对MetalGL非常感兴趣,但目前无法构建该项目。我试图将GCC\u符号\u私有\u外部设置为“是”。修复它!通过在生成设置中从“其他链接器标志”中删除“所有加载”