我目前正在使用Swift进行编码,但出现错误:


没有此类模块Social


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

框架在Objective-C中,所以我为此编写了一个桥头。 br />
请问如何使Xcode识别框架?









评论

不要太先生。很明显,但是您是否尝试了完整的清理和构建?

如果框架头文件已包含在桥接头文件中,则不必将其导入Swift源文件中。

另外,您可能还需要对导入使用引号:#import“ Social / Social.h”

与CocoaPods相同的错误,xcode中没有此类模块错误。

我将Deployment Target从11更改为10,但在Podfile平台:ios,'10 .0'中却忘记了它。那是解决方法。

#1 楼

我不确定为什么会发生这种情况,但是解决您的问题的一种方法是进入构建设置并定义指向包含相关框架的文件夹的框架搜索路径。如果将框架放置在您的项目目录中,只需将框架搜索路径设置为$(SRCROOT)并将其设置为递归即可。

评论


谢谢。我必须在项目构建设置中而不是在目标构建设置中执行此操作

–脉冲星
15年8月28日在10:09



对我来说,诀窍是在Framework Search Paths中找到要使用的框架路径。 $ {TARGET_BUILD_DIR} /YourFrameworkName.framework对我来说效果很好。另请参阅stackoverflow.com/questions/32816507/…

–克里斯·普林斯
15年9月28日在6:46

必须在项目构建设置中而不是在目标构建设置中执行此操作。

– Maxim Mikheev
16年7月5日在13:09

我去洗手间解决了这个问题。当我回来时,它正在工作。我很确定我已经尝试了该线程中的所有操作,不知道该怎么做。我也在某个时候祈祷。

–nmdias
17-10-30在10:35



注意:$(SRCROOT)仅在我将其添加到PODS PROJECT的框架搜索路径中时对我有用。

– addzo
17年12月1日在20:04

#2 楼

如果是星期五下午或凌晨1点之后的任何时间:

打开xcodeproj而不是xcworkspace会导致这样的错误...

评论


我尝试了这作为圣杯。滑稽。谁知道,但是退出然后重新打开工作空间实际上也很有效。清理,然后构建。

–蒙太奇
16年6月20日在18:33

晚上9点使用fastlane,指定了Gym(项目:---)而不是Gym(工作区:----),谢谢!

– RickiG
16年11月30日在20:11

Xcode崩溃后,这发生在我身上,我从错误报告中选择了“重新打开”应用程序。下次我会知道的。

–邮票
19年7月8日在8:42

我重新安装了XCODE,但由于正在通过最近打开的项目打开该应用程序,因此出现此错误。关闭项目,依次单击“文件”->“打开”->“ xcworkspace”文件,一切正常。

– Dpedrinha
1月25日在16:32

也适用于在命令行上构建(我们的问题):xcodebuild -workspace yourproject.workspace。

– Ben Butzer
6月5日12:46



#3 楼

确保子项目中配置的命名与“父”项目的命名相匹配。如果配置命名不完全匹配(区分大小写),则Xcode将中止存档过程并显示错误“ No such module ...”。

,即如果您有“ parent”配置为“ AppStore”的项目中,您必须确保所有子项目也都具有此配置名称。

请参阅我所附的屏幕截图。







评论


在我的情况下,子项目只有Debug and Distribution(调试和分发),并且其父项目正在尝试为Release构建。解决的办法是在子项目中复制“分发”,然后将该副本重命名为“发行”。

–olivaresF
18年2月14日在18:47

这导致我找到了问题,但由于不想接触第3方子项目,因此我通过在自定义配置中添加框架搜索路径来解决了这个问题:)

– DeFrenZ
18年6月18日在9:46

谢谢!我的主项目中有3种配置。因此,我对框架做了同样的事情,它有所帮助。

– daxh
19年6月19日在13:50

关于如何使Xcode构建嵌套子项目的特定配置的任何线索?不想重命名子项目配置,因为它与将新配置添加到主项目之间的联系太紧密

–德伦
19-10-30在12:03

这对我来说很有效,因为我的项目有3种配置,它们从默认的“ Debug”和“ Release”配置重命名。我更新了框架,使其具有相同的3种配置,构建了框架,并且一切正常进行。

–尤里
19年11月6日在22:30

#4 楼

我不太确定为什么马丁R在问题注释中的回答如此被忽略:

请确保您只是尝试跳过框架的导入,因为该框架已经与桥接标头一起添加了。 />
希望对您有所帮助

#5 楼

我在使用Cocoapods和Swift时遇到了同样的问题。我在Podfile中没有注意到以下几行:

# Uncomment this line if you're using Swift
# use_frameworks!


所以,我要做的就是将其更改为:

# Uncomment this line if you're using Swift
use_frameworks!


... aa它起作用了:)

评论


对我来说use_frameworks甚至不在我的Podfile中,所以我添加了它

– PhoenixB
19年3月19日在5:48

#6 楼

请将此屏幕截图与您的构建设置进行比较。
可能会起作用。
转到框架搜索路径:



评论


克里斯·普林斯(Chris Prince)也提到过。

–于富兰
17年12月29日在5:55

#7 楼

以下步骤对我有用。


退出xcode
在终端中运行"pod update"
打开.xcworkspace并再次构建。


评论


这些步骤对我有用...谢谢...我运行了“ Pod install”,但是没有得到“ Module XXX not found ..”,但是退出XCode然后重新打开Workspace后对我有所帮助。

–问
18年8月14日在17:34

我的问题是在添加新的构建配置和方案后,出现“找不到模块...”,退出Pod安装后退出Xcode不起作用。

–胡illi
18年11月1日在9:09

这对我有用。关于为什么可以解决问题的任何解释?

– Nico Cernek
19 Mar 5 '19 at 21:19

它为我工作。重新打开projectname.xcworkspace后,需要清理并重新构建以使其正常工作。

–农药
19年8月30日在9:16

#8 楼

我也遇到了这个问题。对我来说,解决方法是两个项目之间的存档方案不匹配。我有一个带有框架项目和应用程序项目的xcworkspace。问题在于,在我的应用程序的“存档”方案中,我使用的构建配置与框架在其“存档”方案中使用的配置不同。我将两个“构建​​配置”都设置为“发布”,从而解决了该问题。

评论


这对我有用。我将我的主项目Build Config设置回Release(来自Distribution),因此现在它与子项目匹配。一切正常。谢谢!

–查理·塞利格曼(Charlie Seligman)
16-10-19在14:15

我们的框架没有用于项目的AdHoc配置-这意味着它没有与项目一起构建。

–约翰
17年1月30日在16:43

#9 楼

就我而言,在尝试弄清楚我在导入框架时做错了什么之后,我最终发现框架本身就是问题所在。如果您不是从受信任的来源获得框架,则应检查框架并确保其包含一个Modules文件夹,其中包含module.modulemap文件。如果不存在module.modulemap,则将出现“无此类模块'MyFramework'”错误。



如果Modules文件夹中缺少“ MyFramework.swiftmodule” “文件夹,则将找到该框架,但Xcode不会知道其内容,因此您将得到不同的错误。

评论


由于某种原因,即使存在,它也不会在xcode 9.1中显示。右键单击您的框架>在Finder中显示>,然后确保您的模块映射在其中。如果您在Pods项目中使用的是手动框架,请在刚添加新的手动框架或更新现有框架的情况下重建您的Pod。

–克里斯托弗·拉森(Christopher Larsen)
17年11月6日在16:35

谢谢!我确实创建了该文件,并且可以正常工作:框架模块NAME {伞形标题“ NAME.h” export *模块* {export *}}

– Sjoerd Perfors
18年3月2日在16:11

#10 楼

假设Framework确实存在并且在路径中,等等。。。删除〜/ Library / Developer / Xcode / DerivedData / ModuleCache目录(并清理项目并删除项目特定的派生数据,以备不时之需)。 >
执行标准清理时,不会重建ModuleCache目录。

评论


我只是照你说的去做,所以不起作用:/

– alexandresecanove
2015年4月7日在20:23

然后,您可能会遇到另一个与我遇到的问题相同的问题。 :-/

–布拉德·布莱顿
2015年4月7日在20:26

我在Cocoapod上遇到了同样的问题,删除ModuleCache中的文件对我有用。

–HolySamosa
17年4月6日在22:03

#11 楼

对我有用的是对另一个问题的解决方案。关闭Xcode并重新打开项目作为工作区。转到项目文件夹并打开.xcodeworkspace 文件。
打开工作区(而不是项目)后,Pods应该在项目导航器中显示为顶级项目。

#12 楼

确保,Scheme的“构建”选项中的Find implicit Dependencies已打开!

评论


你节省了我很多时间。实际上,为了加快我的代码12的速度,我没有根据Stackoverflow上的某些解决方案选择“查找隐式依赖关系”。但是在重新启动该项目后,它开始抱怨。

–阿米特·库玛(Amit Kumar)
9月23日12:58



#13 楼

几天前我也遇到了同样的错误。这是我解决问题的方法:

错误是“找不到模块”


在根项目目录中创建Podfile
安装cocoapods(a Swift和iOS项目的依赖管理器)
运行pod install

转到项目构建设置:


在Swift编译器下查找Objective-c桥接头-代码生成(如果在这里找不到Swift编译器,则可能将一个新的Swift文件添加到项目中)
将库头文件从左侧拖放到桥接头(请参见下图)



创建一个新的桥接头文件:例如TestProject-Bridging-Header.h并置于Swift Compiler→Objective-C生成的接口头名称下(请参见上图)
在TestProject-Bridging-Header.h文件中,编写#import“ Mixpanel / Mixpanel.h”
在您的Swift文件中,代码应为:
导入Mixpanel(即库名)

就这样。

评论


这个答案有所帮助。当尝试将其设置为MBProgress时,我最终遵循了ios-support.blogspot.com/2017/04/…上的指示,这非常相似。

–Vette
19年6月6日14:50

#14 楼

该问题可能会引起几种潜在的错误配置,请确认您已打开.xcworkspace,但未打开.xcodeproj文件。另外,请确保在构建Social之前先构建TriviaApp
请确保所有具有主应用的模块的iOS部署目标均设置为相同。例如,将TriviaApp的部署目标设置为9.0,还将Social的部署目标设置为9.0
请确保您的主模块(TriviaApp)和所使用的框架(Social)具有相同的配置集。即,如果您的项目具有三个配置DebugReleaseReleasePremium,那么您的社交框架还需要具有三个配置DebugReleaseReleasePremium。还要确保将TriviaAppSocial的存档配置设置为相同。例如,如果将TriviaApp的归档方案设置为ReleasePremium,则还需要将Social的归档方案设置为ReleasePremium
请确保在Social中已添加.swift的情况下,无需在每个Bridging-Header.h文件中导入#use_frameworks!。 。
如果问题来自Pod文件,请确保您未将use_frameworks!注释为Podfile。如果Social对Pod有任何依赖关系,则有时可以重新安装Pod。
如果以上步骤均不起作用,请删除您的派生数据文件夹并尝试重建。


评论


哇,没有您的帮助,我永远不会弄清楚。确实,我在主项目中添加了一个自定义配置,但是框架中没有。

–尤利安·奥诺夫雷(Iulian Onofrei)
6月10日8:33

@lulian很高兴知道它有所帮助

– Sazzad Hissain Khan
6月10日8:37

#3为胜利。错误中没有任何迹象,我在其他任何地方都没有看到必须在框架中匹配应用程序的配置。但这就是造成我问题的原因。

– Brian B
10月5日20:39

@BrianM是的,那部分花了我超过一天的时间。 :(

– Sazzad Hissain Khan
10月5日21:17

#15 楼

好的,对我来说,解决同一问题的方法是设置相对于工作区目录的派生数据位置,而不是将其保留为默认值。
转到xcode中的首选项。转到首选项中的“位置”标签,然后将“派生数据”设置为“相对”。
希望对您有所帮助。

评论


它仅工作一次,然后当我运行时遇到了找不到模块的相同问题。

– nycdanie
16年4月21日在0:15

#16 楼

我在
import Firebase
中遇到相同的错误,但随后注意到我没有将pod添加到主要目标部分,而只是添加到Podfile中的Test和TestUI目标。

使用命令

pod init


对于xcode swift项目,将生成以下Podfile

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

/>
因此,需要确保将Pod添加到任何适当的占位符。

#17 楼

如果您要为tvOS之类的平台进行构建,请确保已选择Apple TV(即匹配)模拟器。

在选择了iOS模拟器的情况下构建tvOS应用确实给了我这个错误。花了一个小时的大部分时间来寻找各种构建问题... Doh。

评论


如果在构建iOS项目时选择“我的Mac”,则同样适用。我不知道为什么Xcode甚至允许这样做...😒

–克拉斯
17年4月26日在10:03

谢谢!现在是如此明显,但是错误却使我寻找更复杂的解决方案!

–丹·梅辛
19 Mar 16 '19在0:16

#18 楼

在我的情况下,将应用程序IPHONEOS_DEPLOYMENT_TARGET设置为9.3,而在我新创建的框架中将其设置为10.2

隐式依赖项解析器忽略了我的新框架,因为目标平台的要求高于该应用程序要求。

调整框架iOS部署目标使其与我的应用程序部署目标匹配后,框架成功编译和链接。

评论


谢谢。浪费了几个小时之后,我发现部署目标是问题所在。

–尼克斯
18年4月24日在6:31

#19 楼

我发现Import Paths中的Build Settings对于自定义(MySQL)模块是错误的。将其指向正确的方向后,消息消失了。

评论


@rplankenhorn好吧,就在您将它们放在计算机上的位置。如果您不知道,请运行查找。

– qwerty_so
17年9月11日20:11在

#20 楼

我在使用Cocoapods添加了几个框架时遇到了相同的错误。如果我们在项目中使用Pods,则应使用xcodeworkspace而不是xcodeproject
要通过xcodebuild运行项目,我在-workspace <workspacename>命令中添加了xcodebuild参数,它运行良好。

评论


如果您有新问题,请单击“提问”按钮进行提问。如果您有足够的声誉,则可以反对该问题。或者,将其“收藏”为收藏,您将收到任何新答案的通知。

–亚历山德罗·卡丁(Alessandro Cuttin)
17年8月16日在15:28

@pawan singh您为我节省了几个小时,谢谢!

–德米特里·森科维奇(Dmitry Senkovich)
19年8月28日在7:16

#21 楼

我使用

目标->常规->链接的框架和库

修复了此问题,并添加了应位于Workspace文件夹顶部的框架。痛苦中。

#22 楼

我刚刚删除了我的cocoapod。然后,我安装了一个pod来删除它。然后,我将其重新添加到Podfile中并重新安装。这使它起作用。不知道为什么。

#23 楼

我已经安装了Pod。当我在设备上构建应用程序时,构建工作没有任何问题,但是存档不起作用。我只是运行:

pod install


没有安装新的Pod,仅重新生成了.xcodeproj文件,并且存档开始工作

#24 楼

在常规=>链接的框架和库中,我添加了我的./Pods/Pods.xcodeproj并成功完成了

#25 楼

在Xcode 10.1中,我的解决方案是在“文件”菜单中的“工作区设置”上更改构建系统。默认情况下,将其设置为“新建构建系统”,将其更改为“旧版构建系统”,并且可以成功完成操作。



评论


谢谢队友,您救了我的一天! +1

–地牢发展
19年2月13日在10:21

#26 楼

有时pod deintegratepod install也对我有帮助。

#27 楼

TL; DR:检查您的Podfile中是否有特定于目标的shared_pods

头撞墙,并尝试了上个星期在这里发布的所有其他答案之后,我终于找到了解决方案。 >
我有两个单独的目标-一个用于发布,一个用于开发。开发目标是在发布目标之后很久才创建的,这使我忘记了该目标的一些设置步骤。

我能够使用发布目标使我的项目正确编译,但是我的开发目标

第二十次查看我的Podfile后,我发现在我的shared_pods定义下,我只有以下内容:

target 'Release' do
  shared_pods
end


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

target 'Release' do
  shared_pods
end

target 'Development' do
    shared_pods
end


希望这可以为某人节省几天的挫败感。

#28 楼

这是编译时错误。您可以在很多情况下使用它:


.xcodeproj代替了.xcworkspace被打开


module.modulemap


Objective-C,库/框架目标。
如果托管自己的库或框架,请确保它具有module.modulemap文件,并且文件头位于Build Phases -> Headers section
Framework Search Paths
Consumer-> framework
如果您尝试在不设置Framework Search Paths的情况下构建应用程序。将Framework Search Path设置为指向框架资源后,Xcode将成功构建项目。但是,当您在模拟器中运行应用程序时,由于以下原因导致崩溃:Image not found about
它可以是绝对路径,也可以是相对路径,例如$(SRCROOT)$(SRCROOT)/..用于工作空间
Import Paths
Swift消费者-> Swift静态库
Import Paths应指向.swiftmodule
Linked Frameworks and Libraries
消费者->静态框架
在此部分中添加Static framework
Find Implicit Dependencies Find Implicit Dependencies已关闭
CocoaPods
pod deintegrate
pod install

UI Test Bundle
对于App Target,其中使用了CocoaPods的其他依赖性。要解决此问题,请使用inherit!中的[About] Podfile
[递归路径]

评论


1.打开ProjectName.xcodeworkspace 2.产品->构建

–科文奇贝克(Kuvonchbek Yakubov)
19/12/18在13:30

@ yoAlex5您能否详细说明一下快速静态库部分。我创建的自定义静态库遇到相同的no module错误,并且尝试在测试项目中实现时无法导入它。我已将“库搜索路径”值复制到“导入路径”。

– Sushree Swagatika
5月9日22:13

#29 楼

我的问题是有多个目标。
我通过以下链接解决了这个问题:
正确配置pod文件并修复构建设置

希望有人会有所帮助。

#30 楼

如果您使用的是迦太基,则构建环境中的框架通常会保留在

$(PROJECT_DIR)/Carthage/Build/iOS

如果运行carthage update --platform ios --no-build(以节省时间),则不会重新创建Build文件夹中的文件,那么这些模块将无法用于XCode。

在我的情况下,我已经运行carthage update --platform ios,那么我的问题就解决了。