iOS开发,导入c文件引发的Could not build module 'UIKit'问题
导致出现异常的原因是是因为工程中添加了某(第三方开源库)
一般情况下出现“Unknown type name”是头文件互相引用出现的,这里可以排除,由于源码使用是c\c++与oc混编,
考虑新的XCode编译文件类型导致的,尝试了几种方案,下面三种可以解决问题。
解决方案一:
选择所有.c文件,将属性的 identity and type 改为Objective-C Source。

解决方案二:
选择所有.c文件,将.c修改为.m

解决方案三:
将Compile Sources As 改为 Objective-C++


另外,添加第三方库一般步骤分三步:
1)拖入库文件夹,copy一份加入自己的项目
2)添加库所需要的框架或者动态链接库
3)ARC下修改编译属性 -fno-objc-arc
但是今天加入zipArchive ,按步骤加入,增加libz动态库,修改-fno-objc-arc一下报了23个错误(汗too many errors emitted, stopping now),都是expected identifier or '(' ,unknown type name 'NSString',could not build module 'Foundation',could not build module 'UIKit'。
通过百度,stackOverflow上找到解决方法:
在所在项目pch文件中,把自己所#import的头文件做如下操作
#ifdef __OBJC__
#import
#endif
分析了一下,zipArchive库是C OC C++文件混编,pch里面自加的头文件是全局性的,当在C文件import时其实是没有意义的,也就是问题出处,所以要ObjC区分开编译,这样总是就解决了。
今天在添加Redis的时候报错,参考这个修改不报错了
iOS开发,导入c文件引发的Could not build module 'UIKit'问题的更多相关文章
- iOS开发——导入c文件引起的 Unknown type name 'NSString' 错误
一般情况下出现“Unknown type name”是头文件互相引用出现的,这里不是这个,由于源码使用是c\c++与oc混编,下面三种可以解决问题方案. 解决方案一: 选择所有.c文件,将属性的 id ...
- iOS import framework头文件时报错could not build module xxx
导致这个错误的原因有多种: 1.库的search paths没有设置对. 2.库里面某些头文件找不到. 而导致.h头文件找不到的原因也有多种: (a)search paths没设置对,文件可能换过位置 ...
- 导入C文件Xcode出现Could not build module 'Foundation'错误
#ifdef __OBJC__ #import <Foundation/Foundation.h> #import "UIImageView+WebCache.h" # ...
- iOS开发网络篇—文件的上传
iOS开发网络篇—文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代 ...
- iOS 开发http post 文件的上传
iOS开发网络篇—文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代 ...
- iOS开发——导入第三方库引起的unknown type name 'NSString'
今天加入SVProgressHUD的第三方库的时候报了24个错误( too many errors emitted, stopping now),都是 expected identifier or ' ...
- iOS开发-- 创建podspec文件,为自己的项目添加pod支持
开篇扯淡 作为一个iOS开发者,一定用过CocoaPods吧,没用过?点这儿去面壁吧 Cocoapods作为iOS开发的包管理器,给我们的开发带来了极大的便利,而且越来越多的第三方类库支持Pod,可以 ...
- iOS开发——Swift篇&文件,文件夹操作
文件,文件夹操作 ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作: 1,遍 ...
- iOS开发-xcdatamodeld文件 CoreData的介绍和使用,sqlite的使用
CoreData的介绍和使用 源引:http://www.jianshu.com/p/d027090af00e CoreData是数据存储的一种方式,CoreData实质也是对SQLite的封装. ...
随机推荐
- boot2docker
boot2docker 简介 boot2docker是解决非linux系统下运行Docker容器不方便的工具 官方介绍 Boot2Docker是在Windows操作系统上运行Docker的唯一方法,现 ...
- tomcat高并发优化的参数优化并查看tomcat线程数
在Tomcat配置文件conf下面 server.xml 中的配置中和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessor ...
- python2 pickle.dump生成的文件,python3 pickle.load怎么加载
会报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 3: ordinal not in range(12 ...
- shell中的shift左移参数命令
shift命令用于对参数的向左移动,通常用于在不知道传入参数个数的情况下依次遍历每个参数,然后进行相应的处理(常见与Linux中各种程序的启动脚本).在扫描处理脚本程序的参数时,经常要用到shift命 ...
- Celery-管理与监控
1. 监控和管理Workers 1.1 将celery实例放入shell [root@node2 app]# celery -A tasks shell Python 3.6.5 (default, ...
- spark sc.textFile() 指定换行符
直接上代码 package com.jason.spark23 import org.apache.spark.sql.SparkSession import org.apache.spark.Spa ...
- python读取excel数据并以第一行标题加内容组成字典格式返回
excel结构如图所示: 代码: import xlrd ''' 通用获取excel数据 @:param path excel文件路径 @:param sheet_name excel文件里面shee ...
- Eclipse项目上传和下载到码云上
本文将介绍如何将本地的项目提交到开源中国的码云(版本控制器)上.改教程讲解过程比较详细,跟着做实现起来很简单.由于自己本身也是一个新手,所以不做过多的解释,只是单纯的描述了该如何去做,大家一起学习共同 ...
- SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)
下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式. 首先我们先创建两个数据库表,分别是user用户表和account账户表 ...
- 在JDBC中实现SQL语句的模糊查询
在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...