该项目的文档说,只要添加框架和链接器标志,您就可以继续工作了。几小时又一小时的浪费时间之后,我发现那不是真的。如果这样做,项目将不会看到头文件。你必须把框架放在某个地方,因为编译器会找到标题。在我的例子中,当我将框架放到/Developer/Library/ framework中,然后告诉它在搜索该框架目录时(不要在头搜索目录中摆弄),这就起了作用。
然后,我得到的问题是,链接失败的消息:
ld: framework not found OCHamcrestIOS我注意到这个项目的文档显示它是为Xcode 4更新的,我在查看了代码之后,删除了框架的二进制文件,并浪费了大量的时间,无法构建框架的IOS版本。
文档是这里。
我还注意到,在该文档中,可可说明告诉您在构建中放置一个副本文件阶段。我试过了。并没有改变结果。
上次我掉进水槽洞是因为库是C++代码。也许这仍然是问题所在。
除非这里有一个快速的解决方案,否则我将回到使用STAsserts,尽管这一前景令人生厌,但这远比现在糟糕得多。
更新:重新安装Xcode。还是不起作用。有一些廉价的方法可以实现这个功能,比如将头文件添加到项目中。对此做了一个博客帖子,让一个人也有了同样的经历。
发布于 2011-06-20 20:13:51
所以我现在采用的解决方案,经过了很多周折之后,就是把这个框架包括在这个项目中。
无论如何,这可能更好,因为在/System/Library/Frameworks中引用它会出现一些版本控制问题,并且可以非常快地设置。此外,我们有一个持续的集成服务器,每当有什么变化不是很大的时候,我们就必须进入该服务器并同步版本。
谢谢你查查德里克。
发布于 2011-06-20 00:27:55
我在我的项目中使用了许多框架。有些来自其他人,有些是我的。查看文档,我建议复制阶段的内容不是用于iOS开发的。所以我不会那么做。我从https://github.com/jonreid/OCHamcrest下载了最新的zip,它似乎包含一个准备就绪的iOS静态库。(在我的mac电脑上没有,所以我不能测试来确认)。
无论如何,我包含静态库的方式是
仅此而已。目标搜索路径将被更新,包括框架目录,框架将列在项目的左边。展开它将显示标题。
你提到的问题听起来像是几件事。首先,未发现的框架听起来像是没有包含在目标中的框架。当您在左边的项目列表中选择框架时,您应该能够看到右边显示的目标成员资格。检查你正在编译的目标是否打开。
其次,构建框架并不是一项琐碎的任务,所以除非您有脚本来完成,否则不要尝试它。我之所以这样说,是因为构建一个iOS静态框架意味着为模拟器和设备进行编译,将编译好的库文件组合成一个通用文件,然后将其和头存储在特定的目录结构中。
不过,从OCHamcrest下载的zip中似乎包含正确的OCHamcrestiOS.framework。因此,如果您将该目录存储在某个位置,并使用我前面概述的步骤链接到它,那么它应该工作得很好。
https://stackoverflow.com/questions/6405676
复制相似问题