Я кодирую расширение (ANE) для iPhone, которое читает список контактов. Я получаю сообщение об ошибке, когда добавляю файл .ane в свой проект Flash Builder и компилирую его. Я без проблем скомпилировал код Objective-c в *.a lib. Я скомпилировал .ane без ошибок.
Это ошибка, когда я добавляю .ane в основной проект Flex:
Error occurred while packaging the application:
ld: absolute addressing (perhaps -mdynamic-no-pic) used in _getContatti from
/var/folders/j9/j9OzOTqhGJGpr2m87bnYEU+++TQ/-Tmp-/888e0e80-9ef5-4d2a-9e34-
c01545b25bfc/mylib.library.com.a(ExtensionMyLibIOSNative.o)
not allowed in slidable image. Use '-read_only_relocs suppress' to enable text
relocs
Compilation failed while executing : ld64
В Xcode я уже установил «Включить связывание с общими библиотеками» на «НЕТ» в настройках сборки. Это код Objective-c, который вызывает ошибку:
FREObject getContatti(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
FREObject nome_visualizzato;
FREObject nome_visualizzatoPrimario;
FREObject nome_visualizzatoAlternativo;
ABAddressBookRef addressBook = ABAddressBookCreate( );
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );
FREObject arrayContatti;
FRENewObject((const uint8_t*)"Vector.<extension.MyLibrary.entity.Contatto>", 0, NULL, &arrayContatti, NULL);
FRESetArrayLength(arrayContatti, nPeople);
for ( int i = 0; i < nPeople; i++ )
{
ABRecordRef ref = CFArrayGetValueAtIndex( allPeople, i );
CFStringRef first = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
CFStringRef last = ABRecordCopyValue(ref, kABPersonLastNameProperty);
CFStringRef company = ABRecordCopyValue(ref, kABPersonOrganizationProperty);
-- DO SOMETHING --
}
return result;
}
Это работает, если я прокомментирую\удалю строки:
CFStringRef first = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
CFStringRef last = ABRecordCopyValue(ref, kABPersonLastNameProperty);
CFStringRef company = ABRecordCopyValue(ref, kABPersonOrganizationProperty);