首页 / 浏览问题 / 移动GIS / 问题详情
iOS12i在mac(intel芯片)的Xcode16.4(16F6)上使用报错
1EXP 2025年09月16日
mac(intel芯片)的Xcode16.4(16F6)上运行11i或12i的示例demo时,或者根据模板创建时,根据报错添加相关依赖后, Xcode最终会报以下错误(只截取部分,实际有36个这种重复定义错误): ld: warning: duplicate symbol 'UGC::UGBufferSFC::CreateBufferExt(UGC::UGGeoLine&, UGC::UGGeoRegion&)' in: /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1934](UGBuffer.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1934](UGBuffer.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1202](UGGeoBuffer.o) duplicate symbol '_OBJC_CLASS_$_ARCalibrateTool' in: /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][2](libObjects_iOS.a-arm64-master.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1811](ARCalirateTool.o) ld: warning: duplicate symbol 'UGC::UGBufferSFC::CreateBuffer(UGC::UGGeoLine&, UGC::UGGeoRegion&)' in: /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1934](UGBuffer.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1202](UGGeoBuffer.o) ld: warning: duplicate symbol 'typeinfo name for UGC::UGBufferSFC' in: /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1934](UGBuffer.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1202](UGGeoBuffer.o) ld: warning: duplicate symbol 'UGC::UGBufferSFC::Outline(OGDC::OgdcPoint2D const&, OGDC::OgdcPoint2D const&, OGDC::OgdcPoint2D const&, double, UGC::UGGeoRegion&, int)' in: /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1934](UGBuffer.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1202](UGGeoBuffer.o) ld: warning: duplicate symbol 'typeinfo for UGC::UGBufferSFC' in: (UGGeoBuffer.o) ld: warning: duplicate symbol 'UGC::UGBufferSFC::UGBufferSFC()' in: /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1934](UGBuffer.o) /Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework/Versions/Current/SuperMap[arm64][1202](UGGeoBuffer.o) ld: 36 duplicate symbols clang++: error: linker command failed with exit code 1 (use -v to see invocation)

1个回答

您好,从报错信息来看,这是典型的符号重复定义问题,主要原因是 SuperMap.framework 中存在重复实现的函数或类(如UGC::UGBufferSFC相关方法、ARCalibrateTool类等),导致链接器在打包时无法确定使用哪个版本的符号。
可尝试以下解决方案:
1、检查框架完整性,确认/Library/SuperMap/SDKs/iPhoneOS.sdk/SuperMap.framework是否为对应版本的完整包,可能存在框架文件损坏或重复打包的情况,建议重新替换官方发布的对应版本框架。
2、排除重复依赖,在 Xcode 项目设置中,检查Build Phases > Link Binary With Libraries,确保只添加了一次SuperMap.framework,避免因多次引入导致符号冲突。

3、更换xcode版本,建议和帮助文档中的一致
1,830EXP 2025年09月16日
已经是最新版本的SuperMap.framework了,导入也只添加了一次。帮助文档的Xcode版本太低(10.几),现在的mac系统已经无法运行了。

目前怀疑是SuperMap.framework包有问题,能否用Xcode16.4测试一下,并提供12i对应的正确的SuperMap.framework包的链接?
...