提前感谢您给我的帮助。
我昨天在互联网上搜索了半天,现在已经有两个小时了,我还没找到任何东西(超过那两个没有帮助的链接FMDatabase.h not found when using route-me library&amp; Failed to emit precompiled header for bridging header)< / p>
所以这就是我的问题:我手边有一个以前开发人员正在研究的项目,当我尝试启动它时,我有两个错误:
无法发出预编译的标头 '/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch' 用于桥接标题 '/Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h'
/Users/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-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch' /Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h:13:9: 注意:包含在的文件中 /Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h:13: #import“customClassViewController.h”
customClassViewController.h第13行:
#import <FMDB/FMDB.h>
我猜这些错误是相互关联的。你知道它可能来自哪里吗?
先谢谢你的帮助,我真的很感激!
编辑battlmonster(新错误):
以下是两个错误(未找到文件(未找到Alavoc-Bridging-Header.h FMDB.h))并且无法发出预编译的标头:
致命错误:文件 '/Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h' 自预编译头文件以来已被修改 '/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch' 建成注释:请重建预编译头 '/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch' /Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h:29:9: 错误:找不到'FMDB / FMDB.h'文件
import
^ 1 error generated. <unknown>:0: error: failed to emit precompiled header
'/用户/我/库/开发商/ Xcode中/ DerivedData / Alavoc-arfzuirebtfstncdztyvgvtpcbgw /建造/ Intermediates.noindex / PrecompiledHeaders / Alavoc-桥接报头 - swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch' 用于桥接标题 '/Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h'
答案 0 :(得分:4)
此错误与错误的桥接标头有关。桥接头是一个特殊的头文件,它列出了所有具有必须可从Swift代码访问的类的Objective-C头文件。所有桥接头定义都以一种可以从Swift中使用的方式进行预编译。在你的情况下,桥接头是“Alavoc / bridge / Alavoc-Bridging-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代码而不适用于第三方库)。
解决方案是从“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路径。
要解决最后一个,只需在Xcode构建设置的“标题搜索路径”中包含正确的路径。假设FMDB位于/ Users / me / Downloads / Alavoc-ios-master / Alavoc / ASDASD / FMDB(你有/Users/me/Downloads/Alavoc-ios-master/Alavoc/ASDASD/FMDB/FMDB.h在那里你需要打开Xcode项目设置 - 在左边选择你的目标 - 选择顶部的“Build Settings” - 找到“Header Search Paths”设置并添加/ Users / me / Downloads / Alavoc-ios-master / Alavoc / ASDASD路径
答案 1 :(得分:0)
如果您正在使用cocoapod并且它是一个框架,建议您不要将其包含在预编译的标题中。
相反,objc文件,使用:
@import framework_name;