来自地狱的静态图书馆路径噩梦

Spa*_*Dog 14 iphone cocoa cocoa-touch ios

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

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

这是库的设置方式:


静态图书馆

构建设置:

  1. 公共头文件夹路径= $(BUILT_PRODUCTS_DIR)
  2. 标题搜索路径= $(SRCROOT) (递归)

建立阶段

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

没有ADD COPY HEADERS阶段


主要项目

建立设置

  1. 标题搜索路径=空
  2. 用户标题搜索路径= $(BUILT_PRODUCTS_DIR) (递归)
  3. 始终搜索用户路径= YES

建立阶段

  1. 是的,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"
Run Code Online (Sandbox Code Playgroud)

我已经失去了两天试图解决这个噩梦.

有什么想法吗?

我已经在这里这里上传了一个示例项目

NSG*_*God 12

下载您的示例项目后,我通过进行以下更改让它在几分钟内完成.

首先,你需要添加的条目MyProject下的头文件搜索路径目标的生成设置,使文件,例如HelloWorldLayer.h,其中#import "cocos2d.h",知道在哪里可以找到该文件.

在下面Header Search Paths,我输入../MyStaticLibrary/MyStaticLibrary/libs/**如下图所示:

在此输入图像描述

这解决了预处理器无法从项目中找到必要的源文件MyStaticLibrary的问题MyProject,但是在编译之后,我得到了关于丢失符号的错误.我需要将内置程序添加libMyStaticLibrary.aLink Binary With Libraries步骤中,如下图所示:

在此输入图像描述

之后,该项目编译得很好.


Spa*_*Dog 2

经过近 5 天的噩梦试图解决这个问题,我终于找到了这个教程:http://www.youtube.com/watch ?v=XUhLETxgcoE

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

感谢每一位试图解决这个问题的人。