2009-10-10 99 views
0

我有一个库,我现在想在应用程序中使用它。我相信我已经正确地与图书馆联系在一起了。这里是所有我做过的事情:iPhone:在应用程序中使用静态库崩溃设备,但不是iPhone模拟器

  • 设置标题搜索路径
  • 设置其他连接标志为“-ObjC”
  • 添加静态库的Xcode项目
  • 确信的lib。一个被列为框架目标
  • 增加了库作为直接依赖

就像我在标题中说,我已经成功与静态里运行应用程序在模拟器中进行模拟。有一次,我尝试使用该设备测试程序,它崩溃它有使用功能的库中的第二个:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSDate firstOfCurrentMonth]: unrecognized selector sent to class 0x3841bb44' 
2009-10-10 12:45:31.159 Basement[2372:207] Stack: 

回答

2

这是由于在当前的SDK链接器的错误。有关该问题和可能的解决方法的更多信息,请参阅this post。 (见this post

更新:

你可以尝试的另一件事是去除静态库和应用程序的项目直接包括库的源文件。我正面临着一个类似的静态库链接问题,这就是我最终为了让它成功运行而退缩的原因。如果这有效(但可能是一种解决方法),那肯定是一个链接器问题。

+0

我试过了,它似乎没有帮助...我将它添加到应用程序,然后添加到库。 – devinross 2009-10-10 17:03:37

+1

作为第二个链接说明,你可能需要添加“-all_load”选项其它链接器标记您的构建设置,从您的静态库获取类别中正确地连接。这是iPhone OS 3.0 SDK的一个已知问题。 – 2009-10-10 23:29:43

0

我最近遇到这个问题。当我注意到另一个类别的DID工作时,我无法使-all_load工作。我对这个类别很懒,并且把它与另一个文件一起包含进来。

我最终创建了一个虚拟类(没有方法,实例变量),并在该虚拟类的.m文件中包含了我的类别的实现。做完这些后,即使删除了-all_load标志,我的类别也开始工作。

这是在iPhone OS 3.1.3上。

这当然不是解决它的正确方法,但它似乎工作。

完整示例代码位于我的blog上,适用于我的(微不足道的)类别。

相关问题