duplicate symbol _CONSTANT_name in:/Users/me/liblibrary.a(filename.o)/Users/me/libOtherlibrary.a(Otherfilename.o)
常量在头文件中定义如此
const int CONSTANT_name = 123;
我试过在#define标签中包装常量,如下所示:
#ifndef CONSTANTS_H#define CONSTANTS_Hconst int CONSTANT_name = 123;#endif
为什么这在构建设备时工作正常,但在构建模拟器时会出现问题?
解决方法 编译器正在告诉你完全正确的事情.您很幸运,直接在iPad上构建时不会发生这种情况.在包含此标头的每个.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时复制符号所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)