37

用 Xcode 6.3 更新后,我发现我的项目有些奇怪。

下面的代码会导致解析问题,显示“无法构建模块'AgendaFramework'”,AgendaFramework 是我为 ios8 定制的嵌入式框架:

@import MyEmbededFramework;

错误标记如下所示:

错误

这些问题是在索引而不是构建期间提出的。整个构建可以成功执行而不会出现任何错误或警告。我可以构建、存档、在设备上运行、部署、提交到 App Store。

但是,当我编辑属于扩展的类时,会出现错误标记。显式链接到嵌入式框架的扩展(小部件)。(我知道当我使用@import 语句时我不必这样做。)

在这种状态下,我无法接收到任何有效的内容助手,非常烦人。

在我用旧样式替换导入语句后,问题就消失了:

#import <AgendaFramework/AgendaFramework.h>

我有几个其他项目与导致此问题的项目具有非常相似的拓扑结构,但它们没关系。只有一个项目会导致此问题。我比较了每个细节构建设置,我找不到任何线索。

我试过了:

  • 删除派生数据
  • 完全清洁
  • 重启

欢迎任何线索。谢谢!

4

8 回答 8

32

它看起来像打开: 允许框架模块中的非模块化包含为我解决了这个问题。

于 2015-08-31T11:39:21.120 回答
3

嗨,这是因为您在框架标题中公开的文件也必须是公开的。

从改变

于 2018-10-16T08:18:41.247 回答
3

有时这个问题可以通过将框架添加到与 .xcodeproj 文件相同的文件夹中来解决,没有子文件夹或任何东西。

归功于 Jonny,他在问题中将其作为评论指出。

于 2016-09-07T10:40:42.137 回答
1

对我有用的解决方案:努力将框架头文件定位到系统样式导入......就像#import <CoreXLib/CoreThreads.h>这个故事:

在我的例子中,我构建的框架来自多个代码库的组合,因为很明显,我可以通过 Framework 与脆弱的 Xcode 项目路径名重用该代码简化器中的一些通用设计模式。

当我构建我的框架“CoreXLib”时,我将它重新组织成 Xcode 典型的 Cocoa 框架。我改变了我的进口:

    #import "CoreTypeAliases.h"    // project local style   

    #import <CoreXLib/CoreTypeAliases.h>    // system or framework style

适当地。使用 CoreXLib.framework 的几个项目(包括乐高文件夹中的公共头文件)工作......所以我认为我很高兴......

不幸的是,一些公开的标头没有得到完全更新。框架中的类以本地风格构建得很好。到目前为止,所有使用它的项目都可以正常工作,然后我遇到了一个没有...以及@jeeeyul 指出的错误

因此,在找到这个线程并找到 @kwz 的解决方案之后,在我的情况下没有让它做任何事情,我决定在我试图解决这个问题的同时完善代码。在打磨过程中,我发现其中一些#imports没有像在 Xcode 搜索和替换中那样进行更改。是时候进行一些手动干扰了...

在修复了我的所有CoreXLib 项目标头中的所有这些引用(不仅仅是公共的,自卫)之后,我又回到了问题中……我将新编译的 CoreXLib.framework 带到了嵌入它的错误项目中。 ..问题消失了!我检查了框架项目和链接框架的项目,两者都是“否”。在几次测试中,同时切换到“是”和“否”没有任何区别。唯一的其他变化是修改。Allow Non-modular Includes...#import "..."#import <CoreXLib/...>

所以有时抛光苹果会击倒臭虫......

于 2017-12-24T18:49:48.217 回答
1

Build Active Architecture Only在构建设置中设置 YES 。它对我有用。

在此处输入图像描述

于 2020-01-28T11:52:38.303 回答
0

今天我通过这些步骤解决了这个问题:

  1. 选择架构“MyEmbededFramework”
  2. 按 [Command + B] 构建
  3. 在构建阶段面板中,将“MyEmbededFramework.framework”添加到 Link Binary With Libraries

尝试构建您的项目,问题现在可能会消失。

于 2017-01-25T06:01:46.207 回答
0

你可以试试这个,它对我有用。删除有关您的项目的 DerivedData 目录。一步步

于 2017-05-18T04:08:50.517 回答
-11

Turn off module's in build settings. That may work

于 2015-04-14T13:57:49.437 回答