2012-06-19 22 views
6

Mam projekt MonoTouch, który buduje i działa dobrze na symulatorze i386/iOS. Projekt odwołuje się do rodzimych (Obj-C), biblioteka, którą przekształcono w MonoTouch DLL za pomocą procesu btouch jak opisano w Xamarin za BindingSample:MonoTouch Kompilacja: ld: symbol (ów) nie znaleziono dla architektury armv7

https://github.com/xamarin/monotouch-samples/tree/eb640165f0485ff59b2f80e73ccff382bf4f2083/BindingSample/src/binding

Więc mój makefile buduje wszystkich trzech architektur (i386 armv6 i armv7), a następnie łączy trzy wyjścia z jedną biblioteką "Universal" i ostatecznie używa btouch do wygenerowania biblioteki DLL MonoTouch.

Aby upewnić się, że moja biblioteka uniwersalna zawiera wszystkie trzy architektury, sprawdziłem pod numerem lipo -info i rzeczywiście zawiera ona i386, armv6 i armv7.

Jednak, gdy buduję do wdrożenia na rzeczywistym urządzeniu z iOS, otrzymuję następujące błędy:

Undefined symbols for architecture armv7: 
    "_ABAddressBookCreate", referenced from: 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_ABAddressBookCopyArrayOfAllPeople", referenced from: 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_ABAddressBookGetPersonCount", referenced from: 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_ABRecordCopyValue", referenced from: 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_kABPersonFirstNameProperty", referenced from: 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_kABPersonLastNameProperty", referenced from: 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
     -[ContactsTokenField setupSms] in libContactsTokenFieldViewUniversal.a(ContactsTokenField.o) 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_ABMultiValueGetCount", referenced from: 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_ABMultiValueCopyLabelAtIndex", referenced from: 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_ABMultiValueCopyValueAtIndex", referenced from: 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_kABPersonEmailProperty", referenced from: 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
    "_kABPersonPhoneProperty", referenced from: 
     -[TITokenFieldView setupWithAddressType:prompt:] in libContactsTokenFieldViewUniversal.a(TITokenField.o) 
ld: symbol(s) not found for architecture armv7 
collect2: ld returned 1 exit status 

mtouch exited with code 1 

Co robię źle?

Odpowiedz

8

znaleźć problem: natywne biblioteki zależy od ram AddressBook i zapomniałem umieścić go w AssemblyInfo.cs projektu definicji API:

[assembly: LinkWith ("libContactsTokenFieldViewUniversal.a", LinkTarget.Simulator | LinkTarget.ArmV6 | LinkTarget.ArmV7, ForceLoad = true, Frameworks="AddressBook Foundation")] 
+0

Wow, prawie zrezygnował. Dziękuję Ci! –

+0

Ten fragment informacji postawił mnie na dobrej drodze po długich i bolesnych poszukiwaniach. Dziękuję Ci. – Aranda

Powiązane problemy