加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

更新到iPhone SDK 4.0后,链接器错误(仅限模拟器)具有自己的库

发布时间:2020-12-15 01:48:10 所属栏目:百科 来源:网络整理
导读:我最近更新到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 foundcollect2: ld returned
我最近更新到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中导致问题
> XCode 3.2.3的变化导致了问题
>构建我自己的库时错误/缺少编译器标志(但是,这些标志只会导致更改的SDK或更改的IDE出现问题)

我还在/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk上为此文件夹的旧版本和新版本执行了文件夹差异.事实证明,“相同”的SDK中实际上有微小的变化.不过,我仍然认为这是一个IDE /编译器标志问题.

有人有什么想法吗?我不想永远坚持3.2 …

解决方法

确保使用与用于应用程序相同的基本SDK重新编译库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读