iPhone应用程序在分发版本上使用静态库编译错误

时间:2009-09-18 20:47:30

标签: iphone build-process compiler-errors distribution

我目前正在尝试构建我的(第一个)iphone应用程序的分发产品,以便可以将其上传到App Store。我已经完成了所有的App ID和Distribution Provisioning配置文件过程,最后得到了Organizer和target的构建配置来识别它。

问题是当在“分发”上设置“活动配置”时(每个iPhone开发中心方向的“发布”配置的副本)我无法获得编译的代码。该项目包含对静态库的引用,该库包含多个类,这些类在许多项目的类中用作基类。因此,在构建Distribution配置时,编译器会抛出错误,说它无法从静态库中找到基类,并且构建失败。

如果我切换Active Config。 “调试”(在开发时使用)根本没有问题,应用程序按预期正确编译。

我无法找到问题所在。我在这里发现了另一个类似的问题,但它似乎是一个不同的情况:

iPhone static library distribution and release build errors (but not for debug)

谷歌似乎也没有太多有用的结果。我还在Build部分检查了目标的信息,并在“Debug”和“Distribution”配置之间来回切换以检查任何相关的差异,但到目前为止还没有找到任何人。实际上我没有在静态库上找到任何相关信息。仅在信息窗口的“常规”选项卡上,但静态库在“直接依赖关系”中正确显示。

所以,此时我无能为力。我试图尽可能地遵循指示,但我想这还不够,我现在遇到问题。我想修复应该有点简单(也许只是设置一些参数,但是我无法找到它。

请你(请:))提供一些帮助。非常感谢任何帮助或提示。

提前谢谢!

3 个答案:

答案 0 :(得分:6)

这是:

要进行分发构建(按照iPhone开发中心指示),您必须复制“发布”配置并将其命名为“分发”,然后在此活动配置下构建项目。在目标的调试和分发配置的信息窗口中检查“标题搜索路径”,我注意到值的差异,设置为(对于两个配置):

$ {BUILD_STYLE} - $ {PLATFORM_NAME} / USR /本地/包括

因此导致$ {BUILD_STYLE} - $ {PLATFORM_NAME}被每个配置的“Debug-iphoneos”和“Distribution-iphoneos”替换。静态库中的所有基类都存储在“include”文件夹中,但是没有“Distribution-iphoneos”文件夹。

这是因为我没有在静态lib项目中添加“Distribution”配置,就像我在主应用程序的项目中所做的那样(我不知道我必须这样做)。所以为了解决这个问题,我只添加了相同的配置。在静态lib项目中并构建它。

总而言之,如果在使用引用的静态库中的类的项目中添加新配置,还要在静态lib项目中添加相同的配置并执行构建。这样主项目就能找到基类。

也许这实际上是基本的东西,对不起我只是学习语言(和XCode):)。

希望这有帮助,再次感谢Alex。

此致

答案 1 :(得分:3)

检查Debug配置的构建选项;例如,Debug配置的标头搜索路径可能与Distribution配置不同。选择菜单Project > Edit Project Settings并输入:Header Search Paths以检查列出的Configuration的设置。如果配置之间存在某些不同,请将它们设置为相同。

答案 2 :(得分:0)

我听说过iPhone OS 3.0 SDK的链接器问题;一些解决方法包括在构建项目时向链接器标志添加-all_load(尽管这可能会产生意想不到的副作用)。另一种选择是升级到3.1 SDK,我相信这些问题已经解决了。当然,这可能不是你的问题......

其他求助地点: