更新到iPhone SDK 4.0后,链接器错误(仅限模拟器)具有自己的库
我最近更新到iPhone SDK 4.0,不再能够为iPhone模拟器构建我的项目.问题是ld找不到我自己的一个库的类:
"_OBJC_CLASS_$_Book",referenced from: objc-class-ref-to-Book in Category.o (maybe you meant: ...) ld: symbol(s) not found collect2: ld returned 1 exit status 我已经阅读了一些其他类似问题的帖子,例如here.“很遗憾”,我的问题与SDK框架无关,但是我自己的lib,所以这里提到的解决方案不适用于此. 该库包含在我的目标的“Link Binary With Libraries”下,库搜索路径是正确的(使用XCode和直接在我的项目文件中使用纯文本编辑器进行检查)并正确添加到gcc命令中. 我使用iPhone模拟器3.2作为基础SDK,但SDK 4.0也出现同样的问题.同样,这适用于我的设备目标,但不适用于我的模拟器目标.不过,在我从iPhone SDK 3.2更新到4.0之前,它同时适用于两者.我还能够通过创建只有一个文件和链接库的新项目来重现此错误.但是,在我更新XCode和我的SDK之前,lib应该没问题,因为它适用于模拟器3.2. 更多事实:Mac OS X 10.6.3,XCode 3.2.3 64位,iPhone OS 3.2,GCC 4.2 任何帮助将受到高度赞赏. 编辑: 重新安装SDK 3.2后,一切都按预期工作了.必须注意的是,每次安装都会覆盖/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs文件夹中的SDK.然后我再次尝试重新安装SDK 4.0,发生了与上面相同的错误.我没有更改项目中的任何内容,并始终使用3.2作为Base SDK. 因此,问题可以缩小到以下选项: > Apple改变了……在模拟器SDK 3.2中导致问题 我还在/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk上为此文件夹的旧版本和新版本执行了文件夹差异.事实证明,“相同”的SDK中实际上有微小的变化.不过,我仍然认为这是一个IDE /编译器标志问题. 有人有什么想法吗?我不想永远坚持3.2 … 解决方法
确保使用与用于应用程序相同的基本SDK重新编译库.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |