我从GitHub下载了一个项目,然后pod下面的文件,其中一些是由OBJ-C编写的,我使用了一个桥头。
pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’
当我使用Xcode 9.0 beta 2运行项目时,遗憾的是错误日志如下:
错误:无法发出预编译的标头 ' /var/folders/kd/4gh0_kxx3jx4thjb_sssmmcw0000gn/T/EvoRadio-Bridging-Header-97bd5f.pch' 用于桥接标题 ' /Users/ringo/Downloads/EvoRadio-master/EvoRadio/Resources/EvoRadio-Bridging-Header.h'
我用google搜索,但没有这样的问题。错误意味着它需要一个PCH文件?
这是我的.pch
标头配置:
它无法解决它。
如何制作?
答案 0 :(得分:17)
在为Encrypted Core Data添加可可豆荚之后,我也遇到了完全相同的问题(Xcode9 beta 6)。
这是我的PodFile
:
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
pod 'EncryptedCoreData', :git => 'https://github.com/project-imas/encrypted-core-data.git'
target 'Root' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for Root
target 'RootTests' do
inherit! :search_paths
# Pods for testing
end
target 'RootUITests' do
inherit! :search_paths
# Pods for testing
end
end
<强>解决方案:强>
1我将$(inherited) non-recursive
添加到Search Path -> Header Search Paths
2然后将${PODS_ROOT} recursive
添加到Search Path -> User Header Search Paths
以上都是我项目中的目标构建设置。
请看看这些答案:
1 Inherit Header Search Paths
2 Inherit User Search Paths
答案 1 :(得分:13)
请注意,如果您的桥接标头通过myproject-Swift.h
导入了本身导入应用程序的Swift模块的Objective-C代码,也会发生这种情况。解决方案是对您的Swift类型使用前向声明,并将项目Swift模块导入.m
文件中。
@class MySwiftClass
或...
typedef NS_ENUM(NSInteger, MySwiftEnumType)
MySwiftEnumType
是最低级别的名称,即使对于类也是如此。因此Swift枚举MyClass.MySwiftEnumType
就变成了MySwiftEnumType
答案 2 :(得分:12)
确保您打开正确的项目工作区,否则Podfile
可能没有编译所需的全部资源。
我在以前工作正常的项目中看到了同样的错误。
我发现我不小心打开了ProjectName.xcodeproj
文件而不是ProjectName.xcworkspace
文件。打开xcworkspace
文件,然后项目再次运行!
答案 3 :(得分:7)
对我来说,当我向现有项目添加新的构建配置和方案时,会出现此问题。
解决方案是在新创建的方案上运行pod install
。之后,项目成功建立。
答案 4 :(得分:5)
您可以尝试此解决方案。我通过这种方式解决了同样的问题。
产品&gt;方案&gt;编辑方案&gt;选择左侧菜单上的“构建”&gt;查找隐式依赖项
在构建选项卡下,选中“查找隐式依赖项”:
然后再打扫干净并再次建造。
答案 5 :(得分:3)
就我而言;
在“目标/构建设置”下
Product_Name部分与 $(TARGET_NAME)
不同当我将其更改为$(TARGET_NAME)时,它已解决。
答案 6 :(得分:2)
在我的情况下,我有相同的编译器错误,其他错误如&#34; Unknown type&#34;在我的一个项目文件中,所以我只是将其添加到有问题的文件中,它立即解决了。
#import <UIKit/UIKit.h>
答案 7 :(得分:2)
XCode可以在某个目标中成功构建,而另一个目标则不能。
最后,我发现标题搜索路径不相同。 (路径:“目标”>“构建设置”>“搜索路径”>“标题搜索路径”>“添加项目”)
我复制并粘贴了成功目标的路径。我做到了。真棒。
答案 8 :(得分:2)
对于我来说,我在文件夹名称“ Supporing FIles”中有一个错字,而不是“ Supporting Files”。
答案 9 :(得分:1)
我只是在为模拟器而不是为硬件设备编译时遇到了这个问题。有两个编译错误,例如:
经过数小时的研究和尝试,结果发现,该项目中没有设置有效的体系结构来编译模拟器。
在x86_64
处添加体系结构class ModelGeometry : public Qt3DRender::QGeometry
{
public:
ModelGeometry(){
}
,以启用对模拟器的编译。
答案 10 :(得分:1)
有很多原因和事情可以做,例如:
对我唯一有用的是Xcode 9 - failed to emit precompiled header中被接受的答案。
播客文件中的 platform :ios, '11.0'
应匹配项目中的目标
答案 11 :(得分:1)
删除Podfile.lock
并重新运行pod install
可以解决此问题。
答案 12 :(得分:1)
我的经验是,Xcode无法找到项目中导入的pod / frameworks的头文件。
我的项目经验:
更新Xcode9.2 - 9.3由于隐式定义现在不可用或过时,许多cocoapods必须更新。
我已将Podfile更改为现在包含'use_frameworks!'。在此之后以及处理其他编译问题后,我发现了您遇到的错误。我相信添加'use_frameworks!阻止了一些在iOS 8之前支持的pod正确编译。我采取的步骤来纠正这个问题:
pod deintegrate
我再次pod install
但问题仍然存在。
最终我删除了Podfile中的use_frameworks行,然后重复了步骤1-3,项目现在能够找到丢失的头文件,问题再也没有自我呈现。
答案 13 :(得分:0)
在我的情况下,我使用错误的方案(顶部菜单)进行构建。
答案 14 :(得分:0)
在更新新的Xcode之后,我也遭受了这一痛苦。经过数小时的调查,我发现如果您有多个目标,则现在必须在Xcode 10的pod文件中添加更多目标。因此您的代码应如下所示:
platform :ios, '9.0'
target 'EvoRadio' do
pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’
target 'EvoRadio2ndtarget' # add your second target
end
我发现在Xcode 9中不需要添加,但是在Xcode 10中需要添加。希望这会有所帮助。
答案 15 :(得分:0)
我已经尝试了答案中提到的所有上述步骤,但是对我没有任何帮助,问题基本上出在项目的部署目标版本和podfile中。
在我的项目部署目标中,目标是10.0,而在podfile中,目标是11.0。
答案 16 :(得分:0)
对于Xcode 11,“ Security.framework”存在问题。我删除了此依赖项,然后重新添加了它。最终解决了其他问题
答案 17 :(得分:0)
重命名现有的Xcode项目配置(导入了另一个Xcode项目)后,出现此错误。
要修复此问题,还必须在导入的项目中重命名相同的配置。
答案 18 :(得分:0)
我有相同的情况,请确保您包含在 YourProjectName-Bridging-Header.h
中的文件A答案 19 :(得分:0)
由于我在此问题上停留了2个工作日,因此我想与您分享我的问题,因为将来搜索者可能会遇到我的问题
使用命令行运行时遇到上述错误,并且发现我正在编写的命令是用于运行.xcodeproj
的,但是要运行.xcworkspace
,则必须编写以下命令
xcodebuild -workspace PROJECTNAME.xcworkspace清除存档 -archivePath建立/ PROJECTNAME-方案SCHEMENAME