首页 文章

Xcode无法发出预编译的头文件?

提问于
浏览
1

在此先感谢您给予我的帮助 .

我昨天在互联网上搜索了半天,现在已经两个小时了,我还没找到任何东西(超过那两个没有帮助的链接FMDatabase.h not found when using route-me libraryFailed to emit precompiled header for bridging header

所以这是我的问题:我手边有一个以前开发人员一直在研究的项目,当我尝试启动它时,我有两个错误:

未能发出预编译 Headers '/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch'用于桥接 Headers '/ 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>

我想这些错误是相互关联的 . 你知道它可能来自哪里吗?

在此先感谢您的帮助,我真的很感激!

Edit for battlmonster (new errors) :

这是两个错误(未找到文件(在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'文件未找到导入^ 1错误生成 . <unknown>:0:错误:未能发出预编译头
'/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch'用于桥接 Headers '/ Users / me / Downloads / Alavoc -ios主/ Alavoc /网桥/ Alavoc-桥接-Header.h”

2 回答

  • 3

    此错误是关于格式错误的桥接标头 . 桥接头是一个特殊的头文件,它列出了所有具有必须可从Swift代码访问的类的Objective-C头文件 . 所有桥接头定义都以一种可以从Swift中使用的方式进行预编译 . 在你的情况下,桥接头是“Alavoc / bridge / Alavoc-Bridging-Header.h”,它包含customClassViewController.h的头文件(来自Alavoc / externalLib / customClass),它表明你的开发人员希望customClassViewController是可访问的在Swift代码中 .

    现在关于桥接头的令人困惑的事情是它不是递归地包含所有内容,即它只是在第一级定义上查找,如果你在导入中导入你想要在Swift中的东西,你必须将它添加到桥接显式 Headers ,否则你可能会收到警告(或有时会出错) . 假设您在桥接头中有 #import "A.h" ,而 #import "B.h" 在"A.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路径列在您的 Headers 搜索路径中 .

    要解决最后一个,只需在Xcode构建设置的“ Headers 搜索路径”中包含正确的路径 . 假设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路径

  • 0

    如果您正在使用cocoapod并且它是一个框架,建议您不要将其包含在预编译的头文件中 .

    相反,objc文件,使用:

    @import framework_name;

相关问题