XCode更新 – iOS链接错误

我只是将我的项目从Xcode 3转换到4,并更新到最新的SDK。 当我在XCode 3中打开它时,项目运行良好,但是在XCode 4中运行时出现错误。

我收到以下链接错误:

Undefined symbols for architecture armv7: "_objc_memmove_collectable", referenced from: __ZN9cPlaylistaSERKS_ in MediaItemManager.o ld: symbol(s) not found for architecture armv7 

从我所读到的关于memmove_collectable的内容来看,它与垃圾收集器的内存有关。 但是在我的项目设置中设置为:

 Obj-C Garbage Collection - Unsupported 

我什至不知道在iOS中有垃圾回收。 任何人都知道我可能做错了什么?

有些帮助解除名字也是很棒的。 我的MediaItemManager是一个C ++类,它调用new / delete和memset / memcpy。 然而,他们都不在一个称为播放列表的function。 MediaItemManager中的文字播放列表在此处被激活。 cPlaylist不会调用memset / memcpy函数。

 cPlaylist* AllSongsPlaylist() { return mSongList; } pPlaylistVec Playlists() { return &mPlaylists; } cPlaylist* PlaylistByIndex(uint32 idx); cPlaylist* PlaylistByName(NSString* name); ... std::vector<cPlaylist> mPlaylists; typedef std::vector<cPlaylist>* pPlaylistVec; 

编辑:这似乎与armv7或armv6发生。 这可能是XCode的安装问题,我不知道XCode安装应该如何看待。 我不得不添加这个符号链接来安装后得到XCode。 iPhone的Codesign对象文件格式无效或不合适

所以你可能会讨厌这个,因为它需要一个小时左右,但我不得不做的这些链接器错误是完全卸载xcode,然后重新启动重新安装xcode并重新启动。 通常这是问题,因为安装xcode 3然后xcode 4不卸载xcode 3通常会导致巨大的问题。 所以你将不得不去terminal和CD到您的开发文件夹和sudo / Library / uninstall-devtools –mode = all对不起人:(希望这可以帮助。

我假设你的C ++代码是在一个库中。 你重build了图书馆吗?

错误表明你的库需要重build,因为它不包含armv7符号,正如错误所示。 换句话说,这不是一个普遍的图书馆。 您需要重build该库,或者,更改您的主要项目,以仅为armv6构build。

值得注意的是,Xcode4默认只为armv7构build。 如果您想要支持4.2以前的iOS4版本,则必须在构build设置中将armv6添加到支持的体系结构中。 而且,您必须相应地重build任何相关的库。

这有任何意义吗?