【问题标题】:Xcode Linking a framework to another frameworkXcode 将一个框架链接到另一个框架
【发布时间】:2017-11-26 17:15:08
【问题描述】:

我有一个构建框架项目的 Xcode Workspace

Framework1 项目独立构建,没有任何依赖关系。并且这个框架包含在Workspace

另一个框架项目Framework2 使用Framework1 作为依赖并构建。

现在,如果我从 Framework2 项目运行测试,它会给出以下错误

> 2017-06-23 15:44:17.029 xctest[1884:32036] The bundle
> “Framework2Tests” couldn’t be loaded because it is damaged or missing
> necessary resources. Try reinstalling the bundle. 2017-06-23
> 15:44:17.029 xctest[1884:32036]
> (dlopen_preflight(/Users/ME/Library/Developer/Xcode/DerivedData/Linker-bhbtuyxcsiwybtheoopvbaexcyfr/Build/Products/Debug-iphonesimulator/Framework2Tests.xctest/Framework2Tests):
> Library not loaded: @rpath/Framwork1.framework/Framwork1   Referenced
> from:
> /Users/ME/Library/Developer/Xcode/DerivedData/Linker-bhbtuyxcsiwybtheoopvbaexcyfr/Build/Products/Debug-iphonesimulator/Framework2.framework/Framework2
> Reason: image not found)
> Program ended with exit code: 82

示例项目 - https://github.com/nanjundas/LinkerError

有人可以帮我吗??

【问题讨论】:

    标签: ios swift xcode linker-errors xctest


    【解决方案1】:

    您是在模拟器还是设备上进行测试?

    目前,Xcode 支持逻辑测试和应用测试。如果您正在测试一个框架并且没有在测试目标的 General 页面中选择 Host Application,这将是一个逻辑测试(这意味着它将在不启动宿主应用程序的情况下自行运行)。

    我认为您可以尝试将 framework1 添加到测试目标的 Build Phases 页面的链接列表中。希望这会对你有所帮助。

    【讨论】:

    • 我正在模拟器上测试它。并且到目前为止我的项目中只有框架,是的主机应用程序是空的 - 我还应该添加 App Target 来测试它?
    • 因为Framework1项目也没有任何宿主应用程序,我能够成功地测试它。
    • @nanjunda,如果你在做逻辑测试,我认为测试目标本身是一个可执行的二进制文件,所以添加 framework1 会有所帮助。你可以检查一下,我认为framework2已经是framework2的测试目标了。
    • 我将 Framework1 与“Framework2Tests”相关联。我仍然看到同样的错误。
    • @nanjunda,我发现测试可执行文件将通过其 rpath 启动这些框架,您可以尝试将 framework1 的路径添加到运行路径搜索路径中吗?(因为 framework2 是一个依赖项并且是已经在默认的 rpath 中)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多