【问题标题】:iOS Custom Framework .framework fileiOS 自定义框架 .framework 文件
【发布时间】:2013-02-12 15:37:56
【问题描述】:

我已按照本教程进行操作:

https://github.com/jverkoey/iOS-Framework

让一切都在开发端工作。即使是依赖产品也能正常工作。最后,我有一个 .framework、.a、headers 文件夹和构建后的 include 文件夹。这篇文章说您只需将 .framework 拖到您的项目中并包含 #include 但是,当我这样做并构建时,我得到一个链接器错误:

ld: framework not found MyFramework

请记住,我的依赖项目中有此工作、链接等,但在该项目中,我将框架项目复制到了测试项目中。将 .framework 拖过来后,我是否需要执行一些步骤?我也试过拖动 .a 也没有成功(同样的错误消息)。

感谢所有帮助。

【问题讨论】:

    标签: ios frameworks


    【解决方案1】:

    你确定你的框架结构完全正确吗?由于您之前只是将其用作子项目,因此您可能无法正确构建框架目录。

    应该是这样的:

    MyFramework.framework     //(directory)
      info.plist
      MyFramework             //(symbolic link to Versions/Current/MyFramework)
      Resources               //(symbolic link to Versions/Current/Resources)
      Headers                 //(symbolic link to Versions/Current/Headers)
      Versions                //(directory)
        Current               //(symbolic link to directory "A" below)
        A                     //(directory)
          Headers             //(directory containing framework headers)
          Resources           //(directory holding framework resources)
          MyFramework         //(actual compiled library, really a .a file)
    

    框架中的 .a 文件不应以 .a 结尾。如前所述,所有这些符号链接都必须正确,框架目录中的“ls -l”应如下所示:

    drwxr-xr-x   7 kendall  admin   238B Feb 19 13:36 ./
    drwxr-xr-x  11 kendall  admin   374B Feb 19 13:36 ../
    lrwxr-xr-x   1 kendall  admin    24B Feb 19 13:36 Headers@ -> Versions/Current/Headers
    lrwxr-xr-x   1 kendall  admin    30B Feb 19 13:36 MyFramework@ -> Versions/Current/MyFramework
    lrwxr-xr-x   1 kendall  admin    26B Feb 19 13:36 Resources@ -> Versions/Current/Resources
    drwxr-xr-x   4 kendall  admin   136B Feb 19 13:36 Versions/
    -rw-r--r--   1 kendall  admin   215B Feb 19 13:36 info.plist
    

    info.plist 的内容(它告诉链接器框架中静态库的名称是什么)看起来像:

    CFBundleDevelopmentRegion
    English
    CFBundleExecutable
    MyFramework
    CFBundleIdentifier
    com.pushio.pushiomanager
    CFBundleInfoDictionaryVersion
    6.0
    CFBundlePackageType
    FMWK
    CFBundleSignature
    ????
    CFBundleVersion
    1.0.0
    

    【讨论】:

    • 哦,这实际上更有可能是正确答案。 LD 知道框架,因此 OP 已在链接阶段正确添加它。这听起来像是一个破碎的框架 - 例如。缺少静态库。 +1
    • 我没有任何资源,所以我有:MyFramework 和 Headers(符号链接)和 Versions 文件夹。在版本中,我有 A-Headers(没有 MyFramework)。我也没有 Info.plist。
    • 请注意,我关注的是上面提到的链接,而不是提到如何创建版本控制的链接。
    • 我很确定您需要一个 info.plist,因为它指示可执行文件的名称...我添加了有关其中内容的信息。
    【解决方案2】:

    在上述教程中,您需要确保删除最新版本的 XCode 添加的 Copy Files Build 阶段。这是由于这一步造成的。其他所有内容均已正确添加。

    【讨论】:

      【解决方案3】:

      *) 我想您在拖动或复制框架时错过了单击“将项目复制到目标组文件夹(如果需要)”复选框。

      *) 并确保通过转到项目 -> 目标 -> 构建阶段 -> 将二进制文件与库链接并添加框架来链接框架。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-10
        • 1970-01-01
        • 2012-10-06
        • 2015-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多