Iphone 来自地狱的静态库路径噩梦

Iphone 来自地狱的静态库路径噩梦,iphone,ios,cocoa-touch,cocoa,Iphone,Ios,Cocoa Touch,Cocoa,这就是重点。我创建了一个子项目(静态库)。这个图书馆编译得很好。没有错误。当我将此库包含在项目中并从项目上的该库导入头时,该库无法编译,因为它找不到属于自身的路径 在网上学习了一系列关于如何创建静态库并将其嵌入到项目中的教程之后,我不知道哪一个是正确的,因为我已经尝试了所有的方法,但都失败了,有些方法不同 以下是设置库的方式: 静态库 生成设置: 公用标题文件夹路径=$(内置产品目录) 标题搜索路径=$(SRCROOT)(递归) 构建阶段 COPY FILES=1个文件,myLibrary.h

这就是重点。我创建了一个子项目(静态库)。这个图书馆编译得很好。没有错误。当我将此库包含在项目中并从项目上的该库导入头时,该库无法编译,因为它找不到属于自身的路径

在网上学习了一系列关于如何创建静态库并将其嵌入到项目中的教程之后,我不知道哪一个是正确的,因为我已经尝试了所有的方法,但都失败了,有些方法不同

以下是设置库的方式:


静态库

生成设置:

  • 公用标题文件夹路径=
    $(内置产品目录)
  • 标题搜索路径=
    $(SRCROOT)
    (递归)
  • 构建阶段

    COPY FILES=1个文件,myLibrary.h,基本上是空的(当我使用静态库模板启动库时由xcode创建)

    添加副本标题阶段


    主要项目

    生成设置

  • 标题搜索路径=空
  • 用户标题搜索路径=
    $(内置产品目录)
    (递归)
  • 始终搜索用户路径=
    YES
  • 构建阶段

  • 是,
    myLibrary.a
    位于目标依赖项上
  • 让我吃惊的是,库本身编译得很好,但当放在项目中时,却找不到属于自己库的头

    注意:我还尝试在库上创建复制头阶段,公开该库上的所有
    .h
    ,但也失败了

    这是一个错误示例:

    /Users/mike/Library/Developer/Xcode/DerivedData/MyApp-dnaimaovscreasadhmvgttwjnabc/Build/Products/Debug-iphoneos/include/myLibrary/ccTypes.h:39:9:
    fatal error: 'Platforms/CCGL.h' file not found
    #import "Platforms/CCGL.h"
    
    我花了两天时间来解决这个噩梦

    有什么想法吗


    我已将一个示例项目上载到

    (没有足够的代表发表评论…)


    您是否尝试在标题搜索路径中特别包括平台目录?可能平台位于源目录中,而不是$(Build_PRODUCTS_DIR)中,因此在当前设置中可能无法搜索。关于显示env变量的脚本,以下是我的操作方法(在新选项卡中打开图像以更好地缩放):

    • 添加了虚拟shell脚本

    • 在Log Navigator上观察其输出


    如您所见,
    build\u PRODUCTS\u DIR
    没有从库中复制任何头。请手动将头放在那里(强烈不推荐),或将搜索路径添加到您知道头必须位于的位置:

    现在,由于有两个标题
    cocos2d.h
    MyStaticLibrary.h
    cocos2d.h
    已成功导入,尽管它将具有其他依赖项


    路径
    。/MyStaticLibrary/build/$(build\u STYLE)-$(PLATFORM\u NAME)
    也将(递归地)具有库的公共头。

    经过近5天的噩梦,我终于找到了本教程:

    这是唯一对我有效的解决方案。最简单也是最好的


    感谢所有试图解决这个问题的人。

    在下载了您的示例项目后,我做了以下更改,使它在几分钟内正常工作

    首先,您需要在标题搜索路径下为目标的构建设置添加一个条目,以便导入“cocos2d.h”的文件(如
    HelloWorldLayer.h
    )知道在哪里可以找到该文件

    标题搜索路径下
    ,我输入了
    。/MyStaticLibrary/MyStaticLibrary/libs/**
    ,如下图所示:

    这解决了预处理器无法从
    MyProject
    项目的
    MyStaticLibrary
    中找到所需源文件的问题,但在编译后,我遇到了一个关于缺少符号的错误。我需要将构建的
    libMyStaticLibrary.a
    添加到
    链接二进制与库的步骤中如下图所示:

    在那之后,项目就可以编译了。

    请试试这个

    步骤1:右键单击“projectName.xcodeproj”(静态库)。选择“获取信息”并从(常规->何处)复制完整路径


    步骤2:将完整路径粘贴到主项目(目标和项目)的“标题搜索路径”

    添加
    运行脚本
    在失败阶段之前要执行的构建阶段,检查
    在构建日志中显示环境变量
    ,启动构建并在
    日志导航器
    处检查路径。脚本为空?仅此而已?这样做只会显示日志导航器上已经显示的内容。我上传了一个示例项目到这里:所以你可以明白我的意思。上面说Safari已经过时了(原文如此)然后要求接受某种使用条款,你能把项目上传到更友好的主机上吗?我今天晚些时候会检查它。没问题。我们开始吧。请试试或者你试过我上传的示例项目了吗?见我问题的最后一段。谢谢。@Ruberduck我相信他的想法和我的一样:添加c正确的标题搜索路径。你也可以使用
    构建位置
    设置将libs和主项目的构建文件放在同一根产品目录下。顺便说一句,我已经尝试了你的答案,但不幸的是它对我不起作用。我即将放弃在Xcode上构建静态库。对于苹果来说,Xcode是t是另一个耻辱太糟糕了。谢谢你的努力。我已经找到了这个问题的解决方案。谢谢你的努力。你几乎做到了,但还有其他一些问题。请看我的答案。谢谢。谢谢。我稍后会试试。顺便说一句,苹果一定是在和开发者开玩笑。@RubberDuck为什么,你遵循了developer.apple.com的任何指南,但它不起作用?我会的我猜这是因为缺少cocos2d或其他什么的文档