Я только что преобразовал свой проект из 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. Однако ни один из них не находится в функции, называемой списками воспроизведения. Вот что происходит в MediaItemManager со словом 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;
Edit:
Кажется, это происходит с armv7 или armv6. Это может быть проблема установки с XCode, я не уверен, как должна выглядеть установка XCode. Мне пришлось добавить эту символическую ссылку, чтобы получить сборку XCode после установки.
Неправильный или неподходящий формат файла объекта iPhone Codesign