我有一个MonoTouch项目,可以在i386 / iOS模拟器上构建和运行.该项目引用了一个本机(Obj-C)库,我通过使用Xamarin的BindingSample中描述的btouch进程将其转换为MonoTouch DLL:
所以我的makefile构建了所有三种架构(i386,armv6和armv7),然后将三个输出组合到一个’Universal’库中,最后使用btouch生成MonoTouch DLL.
为了确保我的通用库包含所有三种体系结构,我使用lipo -info进行了检查,实际上它包含了i386,armv6和armv7.
但是,当我在实际的iOS设备上进行部署时,我会收到以下错误:
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
我究竟做错了什么?
解决方法
发现问题:本地库依赖于AddressBook框架,我忘了将它包含在API定义项目的AssemblyInfo.cs中:
[assembly: LinkWith ("libContactsTokenFieldViewUniversal.a",LinkTarget.Simulator | LinkTarget.ArmV6 | LinkTarget.ArmV7,ForceLoad = true,Frameworks="AddressBook Foundation")]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。