Unknown type name 'xxx' 、Could not build module 'xxx'

今天运行以前的项目是报错
Unknown type name 'xxx' 、Could not build module 'xxx'
硬是在网上查找了半天也没有解决问题;网上的东西虽然很多,但是也很杂乱,最后通过自己的努力解决的问题,生活着实不易,如果你荣幸遇见,可做参考。

Could not build module 'xxx'

出现Could not build module 'xxx'问题,首选项可能是在pch文件添加 #ifdef __OBJC __

#ifdef __OBJC__
#import <Foundation/Foundation.h>
 XXX //其他引用
#endif

可是你得知道 #ifdef __OBJC __ 到底是什么意思
这边文章有了解
https://www.jianshu.com/p/74290b5940d9

其次:如果使用到C++混编到,关于Compile Sources As 到底应该选择 Objective-C++ 昵,还是 According to File Type。貌似在选择Objective-C++ 后确实能解决Could not build module 'xxx',编译的时候确实不报错 Could not build module 'xxx',但是如果你更多的类型定义问题浮现,实则是得不偿失的做法


截图.png

具体详情介绍
可以查看:
https://blog.csdn.net/mad1989/article/details/40590371

Unknown type name 'xxx'

关于Unknown type name 'xxx' 错误,一定是重复而导致的,无需多想,只不过有些重复的比较好找,有些不太好找,普通的可以通过Xcode 工具进行搜索,然后删除重复的部分即可,但是这次我遇到的不是这样,Unknown type name 'tls_protocol_version_t' 我通过工具进行搜索发现,根本搜索不到tls_protocol_version_t 这个东西。


截图

但是通过查看内部库存代码,我发现了问题


截图

发现了这两个属性是在iOS13.0的时候定义的,怪不得之前没有报错;
查看了注释
The minimum allowable versions of the TLS protocol, from <Security/SecProtocolTypes.h>  

突然感觉有了思路,是不是自己在引入security.framework 这个东西的时候出了问题;然后网上搜索了一般,发现 security.framework 是关于RAS 加密的,而自己的程序并没有使用到,于是我将 security.framework 删除后,奇迹般的发现工程跑起来了,这算不算是运气好。
最后问题到这里算是解决了,但是仍然有许多疑问 security.framework 是系统内部库,为啥也会报错,于是我看了一下未删除前的 security.framework 的路径,才发现,这他妈谁干的。。。security.framework 竟然是工程目录下

总结

首先感谢各位博主给予的支持
https://www.jianshu.com/p/74290b5940d9
https://blog.csdn.net/mad1989/article/details/40590371

通过这事,还是发现自己太年轻了,解决问题是总是治标不治本的处理,认为报20个错误和报2个错误对比,报2个错误的方式一定就是正确的解决方法;第二,关于网络上的错误处理方式,还是得结合自己的实际去处理问题,并不是说他人的方法就能处理好自己项目的问题,还是得因项目而定,一步一步查找出问题;