【发布时间】:2009-11-13 20:33:09
【问题描述】:
我有一个编译成 .a 文件的库,链接到我的应用程序。 (iphone,用Xcode开发)
一切似乎都很好,链接似乎成功了,但是当我运行程序时它崩溃了。崩溃点是静态链接库中的 memcmp() 调用。调试器显示了所有名称中带有“dyld”的东西,因此似乎无论出于何种原因它都无法解析 memcmp,开始寻找动态库,然后失败。
AFAIK memcmp 在 libc 中,所以应该不是问题。 (也尝试将 -lc 传递给链接器,但正如我所料,它没有帮助)
那么它应该如何工作?为什么静态链接库不能使用 libc 中的任何内容?应该怎么编译?
谢谢
【问题讨论】:
-
您链接到应用程序的库是您自己编写的吗? - 我不禁怀疑它正在使用未初始化或空指针。或者,也许您没有正确使用导致无效指针的库?回溯说明了什么?
-
不,它是一个广泛使用的库,可以在很多平台上可靠地工作,但它在一开始就失败了,它带有一个初始化函数。相同的代码 sn-p(实际上是 2 个函数调用来设置)回溯指向一个 memcmp 函数。 (库是在调试模式下编译的)
标签: iphone c xcode linker libc