我目前在Swift编码,我有一个错误:

没有这样的模块

但我不明白,因为这个模块在我的项目中,在“链接框架和库”和“嵌入式二进制文件”中声明。

框架是在Objective-C中,所以我为它写了一个桥标头。

请问,如何让Xcode识别框架?


当前回答

实际上,通过添加到build-debug.xconfig的末尾,我更容易地解决了这个问题

#包括“. ./Pods/目标支持文件/Pods- iap /Pods- iap .debug.xcconfig"

一直到build-release.xconfig的末尾

#包括“. ./Pods/目标支持文件/Pods- iap /Pods- iap .release.xcconfig"

因为这些文件已经定义了PODS_ROOT和相关的构建变量。

其他回答

大多数其他答案都是针对CocoaPods或迦太基用户的。如果你不使用这些,但只是想在你的项目中删除一个框架并链接它,它将需要在框架搜索路径中。

系统框架已经在搜索路径(即/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/ sdk/ iPhoneOS${version}.sdk/ system /Library/ frameworks /)。如果您试图使用的文件不在此路径中,则需要将它们的路径添加到Build Settings中的FRAMEWORK_SEARCH_PATHS中。


为什么XCode不知道在哪里找到它,即使你左边面板上的框架在右边面板的标识和类型中列出了一个位置和完整的路径?那我不知道。

TL;DR:检查Podfile中特定于目标的shared_pods

在绞尽脑汁尝试了上周贴在这里的每一个答案之后,我终于找到了一个解决方案。

我有两个独立的目标——一个用于发布,一个用于开发。开发目标是在发布目标之后很久才创建的,这导致我忘记了该目标的一些设置步骤。

我能够使用我的发布目标正确地编译我的项目,但是我的开发目标遇到了一个问题。

在第20次查看我的Podfile后,我注意到在我的shared_pods定义下只有以下内容:

target 'Release' do
  shared_pods
end

我需要做的是将我的第二个目标添加到我的Podfile中,这就解决了这个问题:

target 'Release' do
  shared_pods
end

target 'Development' do
    shared_pods
end

希望这能让一些人少受几天的困扰。

在Xcode 10.1中,我的解决方案是在文件菜单中的工作区设置中改变构建系统。它默认设置为New Build System,将其更改为Legacy Build System,这就成功了。

No such module编译错误

这是编译时错误。你可以在很多情况下得到它:

打开的是.xcodeproj而不是。xcworkspace 模块。modulemap or .swiftmodule[关于]

Objective-C库/框架目标

确保生成的二进制文件包含模块。modulemap文件和它的头文件位于Build Phases -> headers部分

框架搜索路径

Consumer ->框架

如果你试图在没有设置框架搜索路径(消费者)的情况下构建应用程序。在设置框架搜索路径指向框架资源后,Xcode将成功构建项目。然而,当你在模拟器中运行应用程序时,有一个崩溃的原因:Image not foundabout

它可以是一个绝对路径或相对路径,如$(SRCROOT)或$(SRCROOT)/..对于工作空间

导入路径

Swift消费者-> Swift静态库

导入路径(消费者)应该指向.swiftmodule

寻找隐式依赖关系

当您有一个隐式依赖项,但“查找隐式依赖项”已关闭时

CocoaPods

检查目标中是否存在此依赖项

pod deintegrate
pod install

CocoaPods UI测试包

对于应用程序目标,使用额外的依赖CocoaPods。要解决它使用继承![关于]在Podfile

(递归路径)

对我来说,编辑方案->运行,并将调试配置从发布更改为调试解决问题。