大佬教程收集整理的这篇文章主要介绍了iphone – 仅在构建simlator时复制符号,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
duplicate symbol _CONSTANt_name in: /Users/me/libLibrary.a(Filename.o) /Users/me/libOtherLibrary.a(OtherFilename.o)
常量在头文件中定义如此
const int CONSTANt_name = 123;
#ifndef CONSTANTS_H #define CONSTANTS_H const int CONSTANt_name = 123; #endif
为什么这在构建设备时工作正常,但在构建模拟器时会出现问题?
在包含此标头的每个.m文件中,您将创建一个具有相同名称的新的不同变量.编译器可以在将所有这些文件链接到单个.a文件时解决此问题,但是当构建多个.a文件并将多个.a文件链接在一起时,编译器会编译重复的副本.
我会做三件事之一:
>将const int转换为#define. #define CONSTANt_name 123
>在const int之前添加static. static const int CONSTANt_name = 123;
>在const int之前添加extern并将实际的const int添加到单个.m中.在.h中,extern const int CONSTANt_name;.在单个.m中,const int CONSTANt_name = 123;.
对于最后一个,我将创建一个constants.m文件作为一个单独的位置来保存const int CONSTANt_name = 123;定义.
希望有所帮助.
以上是大佬教程为你收集整理的iphone – 仅在构建simlator时复制符号全部内容,希望文章能够帮你解决iphone – 仅在构建simlator时复制符号所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。