提前感谢你对我的帮助。
我昨天在网上搜索了半天,现在搜索了两个小时,但什么也没有找到(除了这两个链接对FMDatabase.h not found when using route-me library&Failed to emit precompiled header for bridging header没有帮助)。
所以这就是我的问题:我刚刚手头上有一个以前的开发人员正在开发的项目,当我试图启动它时,这里有两个错误:
未能发出预编译头
'/users/me/library/developer/xcode/deriveddata/alavoc arfzuirebtfstncdztyvvvtpcbgw/build/intermediates.noindex/precompiledheaders/alavoc-bridge-header-swift nh5n40qps-clang e4rg2tsvlxf.pch'
用于桥接头
'/users/me/downloads/alavoc ios master/alavoc/bridge/alavoc桥接头.h'
/用户/me/downloads/alavoc ios master/alavoc/externallib/customclass/customclassviewcontroller.h:13:9:
错误:找不到“fmdb/fmdb.h”文件
还有一个类似这样的致命错误(即使我只计算了两个错误,这个错误也会出现在前面描述的两个错误之上的日志中)
致命错误:模块文件
'/users/me/library/developer/xcode/deriveddata/modulecache/30e4rg2tsvlxf/foundation-3dfynebrqsxst.pcm'
已过期,需要重新生成:签名不匹配注意:
进口方
'/users/me/library/developer/xcode/deriveddata/alavoc arfzuirebtfstncdztyvvvtpcbgw/build/intermediates.noindex/precompiledheaders/alavoc-bridge-header-swift nh5n40qps-clang e4rg2tsvlxf.pch'
/users/me/downloads/alavoc ios master/alavoc/bridge/alavoc桥接头。h:13:9:
注:包含在文件中
/users/me/downloads/alavoc ios master/alavoc/bridge/alavoc桥接头。h:13:
#导入“customclassviewcontroller.h”
customClassViewcontroller.h第13行:
#import <FMDB/FMDB.h>
我想这些错误是有联系的。你知道它从哪里来吗?
提前感谢你们的帮助,我真的很感激!
为BattlMonster编辑(新错误):
以下是两个错误(未找到文件(在alavoc bridgeing header.h fmdb.h中未找到))和未能发出预编译头:
致命错误:文件
'/users/me/downloads/alavoc ios master/alavoc/bridge/alavoc桥接头.h'
自预编译头之后已被修改
'/users/me/library/developer/xcode/deriveddata/alavoc arfzuirebtfstncdztyvvvtpcbgw/build/intermediates.noindex/precompiledheaders/alavoc-bridge-header-swift nh5n40qps-clang e4rg2tsvlxf.pch'
已生成注意:请重新生成预编译头
'/users/me/library/developer/xcode/deriveddata/alavoc arfzuirebtfstncdztyvvvtpcbgw/build/intermediates.noindex/precompiledheaders/alavoc-bridge-header-swift nh5n40qps-clang e4rg2tsvlxf.pch'
/users/me/downloads/alavoc ios master/alavoc/bridge/alavoc桥接头。H:29:9:
错误:找不到“fmdb/fmdb.h”文件
进口
^ 1 error generated. <unknown>:0: error: failed to emit precompiled header
'/users/me/library/developer/xcode/deriveddata/alavoc arfzuirebtfstncdztyvvvtpcbgw/build/intermediates.noindex/precompiledheaders/alavoc-bridge-header-swift nh5n40qps-clang e4rg2tsvlxf.pch'
用于桥接头
'/users/me/downloads/alavoc ios master/alavoc/bridge/alavoc桥接头.h'
最佳答案
此错误是关于格式错误的桥接头。桥接头文件是一个特殊的头文件,它列出了所有objective-c头文件,其中包含必须从swift代码访问的类。所有桥接头定义都是以一种可以从swift使用的方式预编译的。在您的例子中,桥接头是“alavoc/bridge/alavoc bridge header.h”,它包含customclassviewcontroller.h的头(来自alavoc/externallib/customclass),这表示您的开发伙伴希望customclassviewcontroller可以在swift代码中访问。
现在,桥接头的混乱之处在于它不是递归地包含所有内容,即它只是在第一层定义上查看,如果您在导入中导入了希望在swift中导入的内容,则必须显式地将其添加到桥接头,否则您可能会收到警告(或有时会出现错误)。假设您在桥接头中有#import "A.h"
,在“a.h”中有#import "B.h"
,那么您可能还需要在桥接头中添加“b.h”。
现在在您的示例a=customclassviewcontroller和b=fmdb中,通常您需要将fmdb添加到桥接头中,但问题是您很可能不希望通过桥接头将fmdb导出到swift,因为它不是用于此目的(它是用于您自己的objc代码,而不是用于第三方libs)。
解决方案是从“customclassviewcontroller.h”中删除第13行。这可能会修复桥接头编译,但可能会中断customclassviewcontroller,因此您需要在“customclassviewcontroller.m”中包含fmdb,并且很可能会使“customclassviewcontroller.h”与fmdb无关(或者使用@class X;
转发声明这些用法)。
如果您将#import <FMDB/FMDB.h>
移到实现(.m)文件中,仍然得到error: 'FMDB/FMDB.h' file not found
,则很可能是因为fmdb path没有列在头搜索路径中。
要解决最后一个问题,只需在xcode构建设置的“头搜索路径”中包含正确的路径。假设fmdb位于/users/me/downloads/alavoc ios master/alavoc/asdasd/fmdb(其中有/users/me/downloads/alavoc ios master/alavoc/asdasd/fmdb/fmdb.h)。然后您需要打开xcode项目设置-在左侧选择您的目标-在顶部选择“构建设置”-查找“标题搜索路径”设置并添加/users/me/downloads/alavoc ios master/alavoc/asdasd path
关于objective-c - Xcode无法发出预编译头文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49716615/