如何修复Xcode C++项目中“1 duplicate symbol for architecture x86_64”错误
问题根因
你勾选了「For install builds only(仅安装构建生效)」复选框,因此你修改的「No common blocks」配置仅在执行安装构建时生效,日常调试、普通发布编译时仍默认使用Yes配置,导致修改不生效。你贴的静态成员变量声明、定义代码本身完全符合C++语法规范,不存在语法错误。
class a { public: static int b; }; // 类外定义静态成员,为标准合法写法 int a::b;
解决步骤
- 打开targets->Build settings->Apple Clang - Code Generation配置页,找到「No common blocks」配置项
- 点击配置项左侧的展开箭头,可见「Debug」、「Release」、「For install builds only」三个子配置项
- 将所有子配置项的「No common blocks」参数统一修改为
No,不要仅修改全局默认配置 - 配置修改完成后,按
Command + Shift + K清理Xcode缓存,再重新构建项目即可
如果修改后仍存在链接报错,检查a::b的定义是否仅写在一个.cpp文件中,避免多个编译单元重复定义引发冲突。
内容的提问来源于stack exchange,提问作者Korshunov Vladimir
相关产品推荐
相关产品推荐

