【问题标题】:'ProductModuleName-Swift.h' file not found for Subprojects找不到子项目的“ProductModuleName-Swift.h”文件
【发布时间】:2021-02-08 11:37:48
【问题描述】:

我有一个项目(P1)和一个子项目(P2)。 P2 包含一个 Swift 文件(F2.swift),P1 包含一个 Objective C 文件(F1.h 和 F1.m)。我试图在 F1 中访问 F2。我该怎么做?

我尝试在F1.m 中输入#import <P2-Swift.h>,但它抛出错误'P2-Swift.h' file not found

编辑: 附言子项目为静态库。

【问题讨论】:

标签: objective-c swift swift5


【解决方案1】:

XCode 在 DerivedData 文件夹中的应用数据旁边为您的静态 swift 库生成头文件:

/Users/user/Library/Developer/Xcode/DerivedData/
    YourApp-gwvcbdfthcschccmeafalxjghrzo
        Build
            Intermediates.noindex
                StaticLib.build
                    Debug-iphonesimulator
                        StaticLib.build
                            DerivedSources

“StaticLib”是您的库名称。

所以你应该在你的Build Settings 中设置这个路径 > Header Search Paths:

$(OBJROOT)/StaticLib.build/$(CONFIGURATION)-$(PLATFORM_NAME)/StaticLib.build/DerivedSources

如果你稍后得到Could not find or use auto-linked library 错误,这意味着你的项目是纯 objc 的,你需要将它扩展为 swift。要解决这个问题,只需将空的 swift 文件添加到您的 objc 项目中,所需的 swift 库将包含在您的应用中。

【讨论】:

  • 这已经在我的项目中完成了。我什至可以在 P1 中访问 P2 的 Objective-c 文件。唯一的问题是我无法访问 P1 的 Objective-c 文件中的 Swift 文件。 @iUrii
  • @Soumya 无法访问 swift 文件是什么意思? “StaticLib-Swift.h”包含静态库中的所有公共类/结构,因此您只需将此头文件导入您的 .m 文件。
【解决方案2】:

您可以在 F1.m 文件中添加产品模块名称,然后像这样 #import "ObjCBridgingHeader-Swift.h" 导入其中

这个“ObjCBridgingHeader”是我的项目名称,您可以在产品模块名称中查看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多