0

我有一个我制作的库,现在我想在应用程序中使用它。我相信我已经正确链接到图书馆。以下是我所做的所有事情:

  • 设置标题搜索路径
  • 将其他链接器标志设置为“-ObjC”
  • 添加了静态库 xcode 项目
  • 确保 lib.a 被列为框架目标
  • 将库添加为直接依赖项

就像我在标题中所说的那样,我已经在模拟器中成功运行了带有静态库的应用程序。一旦我尝试使用该设备测试应用程序,它就会在必须使用库中的函数的第二秒崩溃:

*** 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:
4

2 回答 2

2

这是由于当前 SDK 链接器中的错误造成的。有关问题和可能的解决方法的更多信息,请参阅此帖子。(另见这篇文章。)

更新:

您可以尝试的另一件事是删除静态库并将库的源文件直接包含在应用程序的项目中。我遇到了类似的静态库链接问题,这就是我最终依靠它成功运行的原因。如果这有效(但它可能是一个严重的解决方法),那么它绝对是一个链接器问题。

于 2009-10-10T16:54:01.467 回答
0

我最近遇到了这个问题。当我注意到另一个类别我有 DID 工作时,我无法让 -all_load 工作。我对这个类别很懒惰,并将其包含在另一个文件中。

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

这是在 iPhone OS 3.1.3 上。

这当然不是修复它的正确方法,但它似乎有效。

我的(琐碎)类别的完整示例代码在我的博客上。

于 2010-03-24T04:52:18.840 回答