iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 仅在构建simlator时复制符号大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在构建设备(ipad 3)时,我的构建工作找不到任何警告或错误,但在为iPad或iPhone模拟器构建时,我收到链接器错误,如下所示: duplicate symbol _CONSTANt_name in: /Users/me/libLibrary.a(Filename.o) /Users/me/libOtherLibrary.a(OtherFilename.o) 常量在头文件中定义如此 cons
在构建设备(ipad 3)时,我的构建工作找不到任何警告或错误,但在为iPad或iPhone模拟器构建时,我收到链接错误,如下所示:

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_H

const 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时复制符号所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。