在MonoTouch中链接PhoneGap静态库时未定义的符号
问题描述:
我正在为MonoTouch中的UIWebView提供PhoneGap功能。我已经测试了Objective C中的功能,并且静态库在那里正常工作。但是,当我尝试将PhoneGap静态库链接到我的MonoTouch应用程序时,我得到一长串未定义的符号。在MonoTouch中链接PhoneGap静态库时未定义的符号
我已经包含了PhoneGap库的所有头文件,并且我还确保在编译PhoneGap库时未勾选'编译为缩略图'。所以我不确定我错过了什么,错误信息对我没有多大意义。我会在这里引用他们(这是一个很长的名单!),但希望这里有人能够启发我链接器试图告诉我什么!
下面是一长串...
Undefined symbols:
"_ABPersonSetImageData", referenced from:
-[Contact setFromContactDict:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_kABPersonAddressStateKey", referenced from:
_kABPersonAddressStateKey$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonAddressStateKey$non_lazy_ptr)
"_kABPersonPhoneHomeFAXLabel", referenced from:
_kABPersonPhoneHomeFAXLabel$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonPhoneHomeFAXLabel$non_lazy_ptr)
"_kABPersonEmailProperty", referenced from:
_kABPersonEmailProperty$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonEmailProperty$non_lazy_ptr)
"_kABPersonNoteProperty", referenced from:
_kABPersonNoteProperty$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonNoteProperty$non_lazy_ptr)
"_kABWorkLabel", referenced from:
_kABWorkLabel$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABWorkLabel$non_lazy_ptr)
"_kCLLocationAccuracyThreeKilometers", referenced from:
_kCLLocationAccuracyThreeKilometers$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kCLLocationAccuracyThreeKilometers$non_lazy_ptr)
"_OBJC_CLASS_$_CLLocationManager", referenced from:
objc-class-ref-to-CLLocationManager in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_kABPersonInstantMessageServiceICQ", referenced from:
_kABPersonInstantMessageServiceICQ$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonInstantMessageServiceICQ$non_lazy_ptr)
"_kABPersonInstantMessageServiceMSN", referenced from:
_kABPersonInstantMessageServiceMSN$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonInstantMessageServiceMSN$non_lazy_ptr)
"_kABPersonInstantMessageServiceKey", referenced from:
_kABPersonInstantMessageServiceKey$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonInstantMessageServiceKey$non_lazy_ptr)
"_kCLLocationAccuracyNearestTenMeters", referenced from:
_kCLLocationAccuracyNearestTenMeters$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kCLLocationAccuracyNearestTenMeters$non_lazy_ptr)
"_kCLLocationAccuracyKilometer", referenced from:
_kCLLocationAccuracyKilometer$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kCLLocationAccuracyKilometer$non_lazy_ptr)
"_UTTypeCopyPreferredTagWithClass", referenced from:
-[File getMimeTypeFromPath:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_ABPersonCreate", referenced from:
-[Contact init] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
-[File getMimeTypeFromPath:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_kABPersonPhoneProperty", referenced from:
_kABPersonPhoneProperty$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonPhoneProperty$non_lazy_ptr)
"_kABPersonInstantMessageUsernameKey", referenced from:
_kABPersonInstantMessageUsernameKey$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonInstantMessageUsernameKey$non_lazy_ptr)
"_kABOtherLabel", referenced from:
_kABOtherLabel$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABOtherLabel$non_lazy_ptr)
"_kABPersonBirthdayProperty", referenced from:
_kABPersonBirthdayProperty$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonBirthdayProperty$non_lazy_ptr)
"_MPMoviePlayerPlaybackDidFinishNotification", referenced from:
_MPMoviePlayerPlaybackDidFinishNotification$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _MPMoviePlayerPlaybackDidFinishNotification$non_lazy_ptr)
"_ABMultiValueRemoveValueAndLabelAtIndex", referenced from:
-[Contact setMultiValueStrings:forProperty:inRecord:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contact setMultiValueDictionary:forProperty:inRecord:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_ABRecordRemoveValue", referenced from:
-[Contact removeProperty:inRecord:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_ABAddressBookCreate", referenced from:
-[Contacts newContact:withDict:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contacts displayContact:withDict:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contacts search:withDict:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contacts save:withDict:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contacts remove:withDict:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_ABMultiValueCopyValueAtIndex", referenced from:
-[Contact setMultiValueStrings:forProperty:inRecord:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contact setMultiValueDictionary:forProperty:inRecord:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contact extractMultiValue:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contact extractAddresses] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contact extractIms] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_OBJC_CLASS_$_AVAudioPlayer", referenced from:
objc-class-ref-to-AVAudioPlayer in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_kABHomeLabel", referenced from:
_kABHomeLabel$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABHomeLabel$non_lazy_ptr)
"_kABPersonInstantMessageProperty", referenced from:
_kABPersonInstantMessageProperty$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonInstantMessageProperty$non_lazy_ptr)
"_kABPersonAddressZIPKey", referenced from:
_kABPersonAddressZIPKey$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonAddressZIPKey$non_lazy_ptr)
"_ABPersonRemoveImageData", referenced from:
-[Contact setFromContactDict:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
-[Contact setFromContactDict:asUpdate:] in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_kABPersonAddressProperty", referenced from:
_kABPersonAddressProperty$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonAddressProperty$non_lazy_ptr)
"_OBJC_CLASS_$_MPMoviePlayerController", referenced from:
objc-class-ref-to-MPMoviePlayerController in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
"_kABPersonInstantMessageServiceYahoo", referenced from:
_kABPersonInstantMessageServiceYahoo$non_lazy_ptr in libPhoneGap.a(libPhoneGapLib.a-armv6-master.o)
(maybe you meant: _kABPersonInstantMessageServiceYahoo$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Process exited with code 1
希望这是有道理的人在这里,因为它是希腊给我! ;)
感谢
答
我发现这个问题;我错过了PhoneGap库所需的几个框架条目。具体而言,需要将这些框架条目添加到gcc_flags中:
-framework corelocation
-framework mediaplayer
-framework messageui
-framework mobilecoreservices
-framework quartzcore
-framework systemconfiguration
-framework audiotoolbox
-framework avfoundation
-framework addressbook
-framework foundation
-framework coregraphics
-framework addressbookui