【发布时间】:2011-09-27 20:45:51
【问题描述】:
我刚刚将我的项目从 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。但是,它们都不在名为 Playlists 的函数中。这是 MediaItemManager 中的 evertying,其中包含单词 Playlist。 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 object file format invalid or unsuitable
【问题讨论】:
标签: iphone ios xcode linker garbage-collection