連絡先リストを読み取る iPhone 用の拡張機能 (ANE) をコーディングしています。.ane を Flash Builder プロジェクトに追加してコンパイルすると、エラーが発生します。Objective-c コードを *.a lib に問題なくコンパイルしました。エラーなしで .ane をコンパイルしました。
これは、メインの Flex プロジェクトに .ane を追加したときのエラーです。
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);