Ios 框架内包含非模块头错误

Ios 框架内包含非模块头错误,ios,objective-c,import,frameworks,package,Ios,Objective C,Import,Frameworks,Package,我意识到这是一个常见的错误,已经被问过好几次了,但在根据别人的答案尝试了几件不同的事情后,我无法解决它 我正在创建一个框架项目Obj-c,它使用另一个第三方框架。在MyFramework的伞形标题中,我有第三方框架的导入语句。当我打包我的框架并将其包含在另一个iOS项目中时,它无法生成,并出现此错误 我尝试过的事情: 启用“允许非模块包含在框架模块中” 添加了第三方框架的伞形头作为公共头 请告知这里缺少什么。提前谢谢 下面是确切的错误: 框架模块内包含非模块化标头 “MyFramework.Te

我意识到这是一个常见的错误,已经被问过好几次了,但在根据别人的答案尝试了几件不同的事情后,我无法解决它


我正在创建一个框架项目Obj-c,它使用另一个第三方框架。在MyFramework的伞形标题中,我有第三方框架的导入语句。当我打包我的框架并将其包含在另一个iOS项目中时,它无法生成,并出现此错误

我尝试过的事情:

启用“允许非模块包含在框架模块中” 添加了第三方框架的伞形头作为公共头 请告知这里缺少什么。提前谢谢

下面是确切的错误:

框架模块内包含非模块化标头 “MyFramework.TestManager”: “/TestApp/WindowsAzureMessaging.framework/Headers/WindowsAzureMessaging.h”

此外,从路径上看,它似乎试图在TestApp项目中搜索它,而它应该从框架中引用

我在伞形标题中导入了Azure消息框架,如下所示:

#import <WindowsAzureMessaging/WindowsAzureMessaging.h>

我能重现你的错误。看起来,它所引用的和所有其他头都不是为了在模块化框架伞形头中使用,因为它使用用户导入,而不是相对于框架的系统导入,而且它没有模块映射文件

您有几个选择:

调整他们的代码并将其构建为模块,使其模块化。 不要将其包含在伞形标题中,避免引用其中的内容,而是将其链接并直接在应用程序和框架中使用。 您可以复制它们的源代码m和h文件并编译到您的框架中,然后将一些头作为您自己的头公开,而不是将文件框架作为单独的实体使用。
我认为选择1是正确的选择。这并不难,如果你能做到这一点,请考虑提出回购请求,因为这将惠及所有人。

在MyFramework的总括标题中,我有一个第三方框架的导入声明,听起来很糟糕:你为什么需要它?第三方框架是什么?它是一个合适的模块化框架吗?嗯,一开始我没有。我实际上在我的另一个类头文件中有它。当我打包并收到此错误时,我也将其添加到了伞形标题中。仍然不走运。这是WindowsAzureMessaging框架。您还可以添加错误消息的精确副本吗?感谢您确认此问题并提供解决方案选项。我会努力的。