Ich habe mit dem Parse SDK gearbeitet und bin der Kurzanleitung gefolgt. Wenn ich versuche zu laufen, erhalte ich diese 8 Fehler. Irgendwelche Ideen, warum? Es scheint etwas mit dem Facebook-Teil von Parse zu tun zu haben, den ich nicht benutze.
Undefined symbols for architecture armv7:
"_FBTokenInformationTokenKey", referenced from:
-[PFFacebookTokenCachingStrategy accessToken] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setAccessToken:] in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationExpirationDateKey", referenced from:
-[PFFacebookTokenCachingStrategy cacheTokenInformation:] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy expirationDate] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setExpirationDate:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_METACLASS_$_FBSessionTokenCachingStrategy", referenced from:
_OBJC_METACLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBSessionTokenCachingStrategy", referenced from:
_OBJC_CLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationUserFBIDKey", referenced from:
-[PFFacebookTokenCachingStrategy facebookId] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setFacebookId:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
"_OBJC_CLASS_$_FBSession", referenced from:
objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Dies ist eine Art Fehler im Zusammenhang mit Parse iOS 1.1.33, da mehrere Benutzer dieselben Fehler sehen - ich selbst eingeschlossen.
Es gibt einige Problemumgehungen:
Wenn Sie keine Bibliothek verwenden, für die das Linker-Flag -ObjC erforderlich ist, können Sie -ObjC aus Ihrem Projekt entfernen:
Build-Einstellungen> Andere Linker-Flags> -ObjC entfernen
wenn Sie eine Bibliothek verwenden, für die dieses Flag erforderlich ist, können Sie das Facebook SDK hinzufügen.
Beide Optionen beseitigen die Fehler. Hoffentlich beheben sie das, da ich das Facebook SDK in meiner App nicht benötige.
Verfolgen Sie die Diskussion hier:
Hier finden Sie eine möglicherweise einfachere Lösung als das Herunterladen, Kompilieren und Installieren des FB-Kits, das recht umfangreich und umständlich ist. Beachten Sie, dass Sie in Parse natürlich keine der Funktionen des Typs FB verwenden können und dass schwerwiegende Probleme auftreten, wenn Sie einen Parse-Code auslösen, der diese Dummy-Symbole verwenden soll. Aber wenn du dich von ihnen fernhältst, ist alles in Ordnung, denke ich. So...
Erstellen Sie in Ihrer Anwendung ein Objekt mit dem Namen FBMissingSymbols
Löschen Sie die .h, die Sie nicht benötigen
Schreibe dies in die .m:
NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
Sie müssen den alten ParseFacebookUtils.framework
Löschen und den neuen ParseFacebookUtilsV4.framework
Beibehalten, damit er funktioniert.
Ich mochte die Antwort von dbquarrel, aber sie funktioniert nicht mehr, weil es an neuen sozialen Schichten mangelt.
Tun Sie dasselbe, aber fügen Sie stattdessen Folgendes hinzu:
NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
NSString *SLServiceTypeTwitter = @"";
NSString *ACAccountTypeIdentifierTwitter = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
@interface ACAccountStore:NSObject
@end
@implementation ACAccountStore
@end
@interface SLRequest:NSObject
@end
@implementation SLRequest
@end
@interface SLComposeViewController:NSObject
@end
@implementation SLComposeViewController
@end
Stellen Sie sicher, dass nicht zwei Versionen des Frameworks "ParseFacebookUtils" hinzugefügt wurden:
ParseFacebookUtilsV4 und ParseFacebookUtils
Nachdem ich ParseFacebookUtils entfernt und ParseFacebookUtilsV4 beibehalten hatte, funktionierte es einwandfrei.
Meine Lösung wird auf jeden Fall funktionieren und Sie können -ObjC in anderen Linker-Flags verwenden.
Prost .... jetzt funktioniert es ..... und keine Notwendigkeit, -ObjC zu entfernen.
Klingt so, als müssten Sie möglicherweise das "Accounts.Framework" und/oder das "Social.Framework" hinzufügen.
Eine Ergänzung zur Antwort von @blueHula. Parse hat das Facebook SDK aus seinem Framework entfernt, was bedeutet, dass ab einer bestimmten Version (1.1.33) die Integration von parse.framework von der unabhängigen Integration des FB SDK begleitet werden sollte.
Bitte verweisen Sie auf diesen Link nter Verwendung des parse ios sdk ohne Einbeziehung des facebook sdk
Der wichtigste Punkt ist, -force_load $(SRCROOT)/path/libname.a
zu verwenden, um eine Verknüpfung mit den erforderlichen Bibliotheken von Drittanbietern herzustellen, anstatt -all_load
Und -ObjC
Zu verwenden.
es ist 2015 und ich hatte nur den gleichen Fehler. Leider hat keine der obigen Antworten für mich funktioniert. Aber das tat:
Ziel> Phasen erstellen> Binär mit Bibliotheken verknüpfendann libstdc ++. 6.dylib hinzufügen
Dies löste das Problem für mich.
Ich hatte die gleiche Verwendung und und der einzige Dritte, den ich hatte, war das Paypal SDK. Nach dem Entfernen von -ObjC ist alles in Ordnung. (Erstellen Sie immer eine Sicherungskopie Ihres Projekts, bevor Sie Einstellungen ändern.)
Es handelt sich um einen Linker-Fehler. Sie haben kein erforderliches Framework in Ihr Projekt aufgenommen, auf das Sie in einer der enthaltenen Header-Dateien verweisen.
Wenn Sie beispielsweise ein Include in Ihrem Code haben:
#import <Parse/Parse.h>
Es erfordert wahrscheinlich ein unterstützendes Framework und Sie müssen es in Ihre App einbinden. Haben Sie das parse.framework
aus Xcode heraus?
In vielen Frameworks muss das Flag -ObjC als Anderes verknüpftes Flag festgelegt werden, wohingegen Parse es Ihnen nicht erlaubt, fortzufahren, wenn Sie dies tun. Um damit umzugehen, können Sie eines der folgenden Dinge tun. Ich habe ein Beispiel für ein Google Maps SDK gezeigt, das das Flag -ObjC benötigt, aber aufgrund von Parse im selben Projekt kann ich es nicht direkt verwenden:
Lösung 1 - Verwenden des Flags force_load
Verwenden Sie force_load, um ein bestimmtes Framework oder eine bestimmte Bibliothek zu laden, anstatt -ObjC als anderes verknüpftes Flag festzulegen.
-force_load $(SRCROOT)/GoogleMaps.framework/Versions/A/GoogleMaps
Lösung 2 - Verwenden von Facebook SDK
Fügen Sie einfach das Facebook SDK als separates Framework hinzu, damit Sie das -ObjC-Flag verwenden können. Stellen Sie außerdem sicher, dass Sie Accounts.framework
Und Social.framework
Hinzugefügt haben. Wenn Sie Bolt.framework hinzugefügt und Parse blank project verwendet haben, entfernen Sie Bolt.framwork
, Um das doppelte Symbol zu behandeln. Wenn es immer noch wenige Fehler gibt, entfernen Sie das Accounts and Social Framework und fügen Sie es erneut hinzu (dies ist der Fall, wenn Sie das leere Standardprojekt Parse verwendet haben).