oc中.mm怎么建

oc中.mm怎么建,第1张

建一绝正个普通的哪宏轮objective-c Class文件,后缀是.m,然后把它重命名改后缀为.mm就可以用objective-c++编译了。

可以直接在工程中改,选中文件,然后再点击一次文件(不要双击文件),李信就可以重命名了。

这次在集成第三方sdk的时候遇到的duplicate symbol报错十分诡异,当我的项目中有一个.mm文件的时候,再新建一个.mm文件都会有这样的报错。

一、通常一般遇数橘洞到这种错误都是由一下这几点引起的:

二、针对上面的几点,分别有以下改正的方法:

针对上面的第四点,可以采取将多个库文件合并,或者将库文件中有重复的部门删除掉,只保留一份

比如我遇到了下面的错误:

1.根据错误的信息来看,两个静态库文件中有重复的类。我这里解决的办法是将薯枯其中一个静态库中把重复的类删除掉。

2.使用lipo -info命令来查看静态库支持的指令集

由于我现在xcode9.2打出的包都是 armv7 arm64的,所以这里只需要针对这两个指令集来分别 *** 作

3.先将库文件拆分成不同指令集的

4.然后分别删除armv7指令集 和 arm64指令集下重复的文件

使用Ar -dv xxx(库文件) xxx.o(重复的文件) 命令来删除

想查看库文件中有哪些文件可以使用 ar - t 命令

5.合并静态库

然而我遇到的duplicate symbol错误都不是上面的原因造成的,最开始我在报错的类里面搜索“duplicate symbol _StartTime in”中的StartTime这个关键词的时候,没有搜索到有这个关键词。而且奇怪的是当我项目中有一个.mm文件的时候,再新建一个.mm文件都会有这样的报错。真是很诡异!

报错信息

在困扰了很久之后我开始在项目中搜索StartTime这个关键词,我发现在很多类中都有这个关键词,然后一个个的排查。终于在一个类中找到了一个可以的地方。有个相同名称的全局变量,在被其他类使用的时候,没有使用extern来声明可以被其他的类使用,最后在.h文件中在该变量前面加上FOUNDATION_EXTERN关键字后这个问题才被解决

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8176273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存