ios - Apple Mach-0 linker error when adding Parse to existing FB SDK -
my first question here, pardon mistakes. i've created app , managed integrate both google plus login(sdk 1.7.1) , fb login(sdk 4.2.0). worked fine till here. later, let people manually sign up, i've added parse(sdk version 1.7.4).
now when -objc linker flag not present in build settings, builds fine , i'm able sign , things parse. both fb , g+ throw errors like: "unknown class fbsdkloginbutton in interface builder file, unknown class gppsigninbutton in interface builder file, unknown class fbsdkprofilepictureview in interface builder file", etc. however, can login in facebook using custom button. google doesn't respond. both buttons views have custom classes.
if remove -objc linker flag, 42 errors below:
undefined symbols architecture x86_64: "_fbtokeninformationexpirationdatekey", referenced from: -[pffacebooktokencachingstrategy cachetokeninformation:] in parsefacebookutils(pffacebooktokencachingstrategy.o) -[pffacebooktokencachingstrategy expirationdate] in parsefacebookutils(pffacebooktokencachingstrategy.o) -[pffacebooktokencachingstrategy setexpirationdate:] in parsefacebookutils(pffacebooktokencachingstrategy.o) "_fbtokeninformationtokenkey", referenced from: -[pffacebooktokencachingstrategy accesstoken] in parsefacebookutils(pffacebooktokencachingstrategy.o) -[pffacebooktokencachingstrategy setaccesstoken:] in parsefacebookutils(pffacebooktokencachingstrategy.o) "_fbtokeninformationuserfbidkey", referenced from: -[pffacebooktokencachingstrategy facebookid] in parsefacebookutils(pffacebooktokencachingstrategy.o) -[pffacebooktokencachingstrategy setfacebookid:] in parsefacebookutils(pffacebooktokencachingstrategy.o) "_objc_class_$_fbappcall", referenced from: objc-class-ref in parsefacebookutils(pffacebookauthenticationprovider.o) "_objc_class_$_fbrequest", referenced from: objc-class-ref in parsefacebookutils(pffacebookauthenticationprovider.o) "_objc_class_$_fbsession", referenced from: objc-class-ref in parsefacebookutils(pffacebookauthenticationprovider.o) "_objc_class_$_fbsessiontokencachingstrategy", referenced from: _objc_class_$_pffacebooktokencachingstrategy in parsefacebookutils(pffacebooktokencachingstrategy.o) "_objc_metaclass_$_fbsessiontokencachingstrategy", referenced from: _objc_metaclass_$_pffacebooktokencachingstrategy in parsefacebookutils(pffacebooktokencachingstrategy.o) "std::string::find_first_of(char const*, unsigned long, unsigned long) const", referenced from: macstringutilspfc_::integervalueatindex(std::string&, unsigned int) in parsecrashreporting(string_utilities.o) "std::string::find_first_not_of(char const*, unsigned long, unsigned long) const", referenced from: macstringutilspfc_::integervalueatindex(std::string&, unsigned int) in parsecrashreporting(string_utilities.o) "std::string::substr(unsigned long, unsigned long) const", referenced from: macstringutilspfc_::integervalueatindex(std::string&, unsigned int) in parsecrashreporting(string_utilities.o) "std::string::_rep::_m_destroy(std::allocator<char> const&)", referenced from: breakpadpfc_::handleuncaughtexception(nsexception*) in parsecrashreporting(breakpad.o) breakpadpfc_::initialize(nsdictionary*) in parsecrashreporting(breakpad.o) breakpadpfc_::generatereport(nsdictionary*) in parsecrashreporting(breakpad.o) google_breakpadpfc_::exceptionhandler::exceptionhandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool, char const*) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::exceptionhandler(bool (*)(void*, int, int, int, unsigned int), void*, bool) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::~exceptionhandler() in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::updatenextid() in parsecrashreporting(exception_handler.o) ... "std::string::_rep::_s_empty_rep_storage", referenced from: breakpadpfc_::handleuncaughtexception(nsexception*) in parsecrashreporting(breakpad.o) breakpadpfc_::initialize(nsdictionary*) in parsecrashreporting(breakpad.o) breakpadpfc_::generatereport(nsdictionary*) in parsecrashreporting(breakpad.o) google_breakpadpfc_::exceptionhandler::exceptionhandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool, char const*) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::exceptionhandler(bool (*)(void*, int, int, int, unsigned int), void*, bool) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::~exceptionhandler() in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::updatenextid() in parsecrashreporting(exception_handler.o) ... "std::string::append(char const*, unsigned long)", referenced from: google_breakpadpfc_::minidumpgenerator::uniquenameindirectory(std::string const&, std::string*) in parsecrashreporting(minidump_generator.o) "std::string::append(std::string const&)", referenced from: google_breakpadpfc_::minidumpgenerator::uniquenameindirectory(std::string const&, std::string*) in parsecrashreporting(minidump_generator.o) "std::string::append(unsigned long, char)", referenced from: google_breakpadpfc_::minidumpgenerator::uniquenameindirectory(std::string const&, std::string*) in parsecrashreporting(minidump_generator.o) "std::string::assign(char const*, unsigned long)", referenced from: macstringutilspfc_::converttostring(__cfstring const*) in parsecrashreporting(string_utilities.o) "std::string::assign(std::string const&)", referenced from: google_breakpadpfc_::exceptionhandler::exceptionhandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool, char const*) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::updatenextid() in parsecrashreporting(exception_handler.o) google_breakpadpfc_::minidumpgenerator::uniquenameindirectory(std::string const&, std::string*) in parsecrashreporting(minidump_generator.o) macstringutilspfc_::integervalueatindex(std::string&, unsigned int) in parsecrashreporting(string_utilities.o) void google_breakpadpfc_::readimageinfo<google_breakpadpfc_::macho64>(google_breakpadpfc_::dynamicimages&, unsigned long long) in parsecrashreporting(dynamic_images.o) void google_breakpadpfc_::readimageinfo<google_breakpadpfc_::macho32>(google_breakpadpfc_::dynamicimages&, unsigned long long) in parsecrashreporting(dynamic_images.o) "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from: breakpadpfc_::handleuncaughtexception(nsexception*) in parsecrashreporting(breakpad.o) breakpadpfc_::initialize(nsdictionary*) in parsecrashreporting(breakpad.o) breakpadpfc_::generatereport(nsdictionary*) in parsecrashreporting(breakpad.o) macstringutilspfc_::integervalueatindex(std::string&, unsigned int) in parsecrashreporting(string_utilities.o) google_breakpadpfc_::readtaskstring(unsigned int, unsigned long long) in parsecrashreporting(dynamic_images.o) google_breakpadpfc_::utf16toutf8(std::vector<unsigned short, std::allocator<unsigned short> > const&, bool) in parsecrashreporting(string_conversion.o) "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from: google_breakpadpfc_::minidumpgenerator::uniquenameindirectory(std::string const&, std::string*) in parsecrashreporting(minidump_generator.o) google_breakpadpfc_::minidumpgenerator::writemodulestream(unsigned int, mdrawmodule*) in parsecrashreporting(minidump_generator.o) void google_breakpadpfc_::readimageinfo<google_breakpadpfc_::macho64>(google_breakpadpfc_::dynamicimages&, unsigned long long) in parsecrashreporting(dynamic_images.o) void google_breakpadpfc_::readimageinfo<google_breakpadpfc_::macho32>(google_breakpadpfc_::dynamicimages&, unsigned long long) in parsecrashreporting(dynamic_images.o) google_breakpadpfc_::dynamicimage::dynamicimage(unsigned char*, unsigned long, unsigned long long, std::string, unsigned long, unsigned int, int) in parsecrashreporting(dynamic_images.o) "std::bad_alloc::~bad_alloc()", referenced from: google_breakpadpfc_::exceptionhandler::installhandler() in parsecrashreporting(exception_handler.o) "std::__throw_bad_alloc()", referenced from: std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> >::_m_insert_aux(__gnu_cxx::__normal_iterator<google_breakpadpfc_::dynamicimageref*, std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> > >, google_breakpadpfc_::dynamicimageref const&) in parsecrashreporting(dynamic_images.o) google_breakpadpfc_::dynamicimageref* std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> >::_m_allocate_and_copy<google_breakpadpfc_::dynamicimageref*>(unsigned long, google_breakpadpfc_::dynamicimageref*, google_breakpadpfc_::dynamicimageref*) in parsecrashreporting(dynamic_images.o) std::vector<unsigned short, std::allocator<unsigned short> >::_m_fill_insert(__gnu_cxx::__normal_iterator<unsigned short*, std::vector<unsigned short, std::allocator<unsigned short> > >, unsigned long, unsigned short const&) in parsecrashreporting(string_conversion.o) "std::__throw_length_error(char const*)", referenced from: std::vector<mdmemorydescriptor, google_breakpadpfc_::pagestdallocator<mdmemorydescriptor> >::_m_insert_aux(__gnu_cxx::__normal_iterator<mdmemorydescriptor*, std::vector<mdmemorydescriptor, google_breakpadpfc_::pagestdallocator<mdmemorydescriptor> > >, mdmemorydescriptor const&) in parsecrashreporting(minidump_generator.o) std::vector<mdmemorydescriptor, google_breakpadpfc_::pagestdallocator<mdmemorydescriptor> >::reserve(unsigned long) in parsecrashreporting(minidump_generator.o) std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> >::reserve(unsigned long) in parsecrashreporting(dynamic_images.o) std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> >::_m_insert_aux(__gnu_cxx::__normal_iterator<google_breakpadpfc_::dynamicimageref*, std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> > >, google_breakpadpfc_::dynamicimageref const&) in parsecrashreporting(dynamic_images.o) std::vector<unsigned char, std::allocator<unsigned char> >::_m_fill_insert(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&) in parsecrashreporting(dynamic_images.o) std::vector<unsigned short, std::allocator<unsigned short> >::_m_fill_insert(__gnu_cxx::__normal_iterator<unsigned short*, std::vector<unsigned short, std::allocator<unsigned short> > >, unsigned long, unsigned short const&) in parsecrashreporting(string_conversion.o) "std::__throw_out_of_range(char const*)", referenced from: google_breakpadpfc_::minidumpgenerator::uniquenameindirectory(std::string const&, std::string*) in parsecrashreporting(minidump_generator.o) "std::terminate()", referenced from: ___clang_call_terminate in parsecrashreporting(breakpad.o) ___clang_call_terminate in parsecrashreporting(exception_handler.o) ___clang_call_terminate in parsecrashreporting(minidump_generator.o) ___clang_call_terminate in parsecrashreporting(ios_exception_minidump_generator.o) ___clang_call_terminate in parsecrashreporting(minidump_file_writer.o) ___clang_call_terminate in parsecrashreporting(file_id.o) ___clang_call_terminate in parsecrashreporting(macho_id.o) ... "typeinfo std::bad_alloc", referenced from: gcc_except_table22 in parsecrashreporting(exception_handler.o) "vtable __cxxabiv1::__class_type_info", referenced from: typeinfo google_breakpadpfc_::minidumpgenerator in parsecrashreporting(minidump_generator.o) note: missing vtable means first non-inline virtual member function has no definition. "vtable __cxxabiv1::__si_class_type_info", referenced from: typeinfo google_breakpadpfc_::iosexceptionminidumpgeneratorpfc_ in parsecrashreporting(ios_exception_minidump_generator.o) note: missing vtable means first non-inline virtual member function has no definition. "vtable std::bad_alloc", referenced from: google_breakpadpfc_::exceptionhandler::installhandler() in parsecrashreporting(exception_handler.o) note: missing vtable means first non-inline virtual member function has no definition. "operator delete[](void*)", referenced from: ___32-[breakpadcontrollerpfc_ start:]_block_invoke in parsecrashreporting(breakpadcontroller.o) macstringutilspfc_::converttostring(__cfstring const*) in parsecrashreporting(string_utilities.o) google_breakpadpfc_::utf16toutf8(std::vector<unsigned short, std::allocator<unsigned short> > const&, bool) in parsecrashreporting(string_conversion.o) "operator delete(void*)", referenced from: _breakpadcreatepfc_ in parsecrashreporting(breakpad.o) google_breakpadpfc_::exceptionhandler::exceptionhandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool, char const*) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::exceptionhandler(bool (*)(void*, int, int, int, unsigned int), void*, bool) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::~exceptionhandler() in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::uninstallhandler(bool) in parsecrashreporting(exception_handler.o) google_breakpadpfc_::exceptionhandler::installhandler() in parsecrashreporting(exception_handler.o) google_breakpadpfc_::minidumpgenerator::minidumpgenerator(unsigned int, unsigned int) in parsecrashreporting(minidump_generator.o) ... "operator new[](unsigned long)", referenced from: ___32-[breakpadcontrollerpfc_ start:]_block_invoke in parsecrashreporting(breakpadcontroller.o) macstringutilspfc_::converttostring(__cfstring const*) in parsecrashreporting(string_utilities.o) google_breakpadpfc_::utf16toutf8(std::vector<unsigned short, std::allocator<unsigned short> > const&, bool) in parsecrashreporting(string_conversion.o) "operator new(unsigned long)", referenced from: _breakpadcreatepfc_ in parsecrashreporting(breakpad.o) google_breakpadpfc_::exceptionhandler::installhandler() in parsecrashreporting(exception_handler.o) google_breakpadpfc_::minidumpgenerator::minidumpgenerator(unsigned int, unsigned int) in parsecrashreporting(minidump_generator.o) void google_breakpadpfc_::readimageinfo<google_breakpadpfc_::macho64>(google_breakpadpfc_::dynamicimages&, unsigned long long) in parsecrashreporting(dynamic_images.o) void google_breakpadpfc_::readimageinfo<google_breakpadpfc_::macho32>(google_breakpadpfc_::dynamicimages&, unsigned long long) in parsecrashreporting(dynamic_images.o) std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> >::_m_insert_aux(__gnu_cxx::__normal_iterator<google_breakpadpfc_::dynamicimageref*, std::vector<google_breakpadpfc_::dynamicimageref, std::allocator<google_breakpadpfc_::dynamicimageref> > >, google_breakpadpfc_::dynamicimageref const&) in parsecrashreporting(dynamic_images.o) std::vector<unsigned char, std::allocator<unsigned char> >::vector<unsigned char*>(unsigned char*, unsigned char*, std::allocator<unsigned char> const&) in parsecrashreporting(dynamic_images.o) ... "___cxa_begin_catch", referenced from: _breakpadreleasepfc_ in parsecrashreporting(breakpad.o) _breakpadadduploadparameterpfc_ in parsecrashreporting(breakpad.o) _breakpadcreatepfc_ in parsecrashreporting(breakpad.o) _breakpadsetkeyvaluepfc_ in parsecrashreporting(breakpad.o) _breakpadremoveuploadparameterpfc_ in parsecrashreporting(breakpad.o) _breakpadkeyvaluepfc_ in parsecrashreporting(breakpad.o) _breakpadremovekeyvaluepfc_ in parsecrashreporting(breakpad.o) ... "___cxa_end_catch", referenced from: _breakpadreleasepfc_ in parsecrashreporting(breakpad.o) _breakpadadduploadparameterpfc_ in parsecrashreporting(breakpad.o) _breakpadcreatepfc_ in parsecrashreporting(breakpad.o) _breakpadsetkeyvaluepfc_ in parsecrashreporting(breakpad.o) _breakpadremoveuploadparameterpfc_ in parsecrashreporting(breakpad.o) _breakpadkeyvaluepfc_ in parsecrashreporting(breakpad.o) _breakpadremovekeyvaluepfc_ in parsecrashreporting(breakpad.o) ... "___cxa_get_exception_ptr", referenced from: google_breakpadpfc_::exceptionhandler::installhandler() in parsecrashreporting(exception_handler.o) "___cxa_guard_abort", referenced from: +[breakpadcontrollerpfc_ sharedinstance] in parsecrashreporting(breakpadcontroller.o) "___cxa_guard_acquire", referenced from: +[breakpadcontrollerpfc_ sharedinstance] in parsecrashreporting(breakpadcontroller.o) "___cxa_guard_release", referenced from: +[breakpadcontrollerpfc_ sharedinstance] in parsecrashreporting(breakpadcontroller.o) "___gxx_personality_v0", referenced from: +[breakpadcontrollerpfc_ sharedinstance] in parsecrashreporting(breakpadcontroller.o) ___32-[breakpadcontrollerpfc_ start:]_block_invoke in parsecrashreporting(breakpadcontroller.o) dwarf exception unwind info (__eh_frame) in parsecrashreporting(breakpadcontroller.o) breakpadpfc_::handleuncaughtexception(nsexception*) in parsecrashreporting(breakpad.o) _breakpadreleasepfc_ in parsecrashreporting(breakpad.o) breakpadpfc_::initialize(nsdictionary*) in parsecrashreporting(breakpad.o) _breakpadadduploadparameterpfc_ in parsecrashreporting(breakpad.o) ... ld: symbol(s) not found architecture x86_64 clang: error: linker command failed exit code 1 (use -v see invocation)
what i've tried: 1. searched extensively on subject 2. deleted bolts.framework both parse , facebook, cleaned, added , built again. 3. added searchpaths fbsdk, google sdk , parse framework searchpaths. 4. rechecked app ids 5. added necessary frameworks mentioned in respective documentation.
using xcode objc 6.3.2 , iphone 6 simulator.
i know have integrate google maps , i've been reading maps not work without -objc linker flag. (i might wrong). appreciated. thank you.
Comments
Post a Comment