Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compile Error using Parse and Facebook Frameworks in Xcode 6.3 (Swift)

I'm trying to integrate Parse and Facebook's SDK with my app using Xcode 6.3 and am getting these errors when attempting to build:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_FBSDKAppEvents", referenced from:
      __TMaCSo14FBSDKAppEvents in AppDelegate.o
  "_OBJC_CLASS_$_FBSDKApplicationDelegate", referenced from:
      __TMaCSo24FBSDKApplicationDelegate in AppDelegate.o
  "_OBJC_CLASS_$_PFAnalytics", referenced from:
      __TMaCSo11PFAnalytics in AppDelegate.o
  "_OBJC_CLASS_$_PFFacebookUtils", referenced from:
      __TMaCSo15PFFacebookUtils in AppDelegate.o
  "_OBJC_CLASS_$_Parse", referenced from:
      __TMaCSo5Parse in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I don't know what this means, but I've tried many other solutions, such as cleaning, deleting the Derived Data folder, checking all of my frameworks, and I still can't solve the problem. If anyone has any idea how to fix this I would be very grateful. Thank you for your time.

Edit This is the Bridging-Header.h that I'm using:

#import <AFNetworking.h>
#import <BDBOAuth1RequestOperationManager.h>
#import <NSDictionary+BDBOAuth1Manager.h>
#import <UIImageView+AFNetworking.h>
#import <UIScrollView+SVInfiniteScrolling.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <Parse/Parse.h>
#import <ParseCrashReporting/ParseCrashReporting.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
#import <Bolts/Bolts.h>

This is the AppDelegate.swift file:

import UIKit
import CoreData
import Parse
import FBSDKCoreKit
import FBSDKLoginKit
import Bolts

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

    // Type casting in swift is "as Type", you'll need to unwrap optionals however.
    let tabBarController = self.window!.rootViewController as! UITabBarController
    let tabBar = tabBarController.tabBar as UITabBar

    // I prefer to use 0 based labels since the array is 0 based
    let tabBarItem0 = tabBar.items![0] as! UITabBarItem
    let tabBarItem1 = tabBar.items![1] as! UITabBarItem
    let tabBarItem2 = tabBar.items![2] as! UITabBarItem

    // The UIColor method you are using is an initializer in swift
    tabBar.tintColor = UIColor(red: 62.0/255.0, green: 191.0/255.0, blue: 180.0/255.0, alpha: 1.0)

    // UIImage also has an initializer for your situation in swift
    tabBarItem0.selectedImage = UIImage(named: "Discover TabBar Select.pdf")
    tabBarItem1.selectedImage = UIImage(named: "Me TabBar Select.pdf")
    tabBarItem2.selectedImage = UIImage(named: "Settings TabBar Select.pdf")

    //Facebook SDK Setup
    FBSDKApplicationDelegate.sharedInstance()
    Parse.setApplicationId("HxjVTJZ2rZA6qFBl0Xaji9z12HYQmTFPIXhVcfPp", clientKey:"8FJT7KHSmDPZi1AtpFS1GvTw39qevvB0JuimwWdS")

    if let launchOptions = launchOptions {
        PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)
    } else {
        PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions([NSObject:AnyObject]())
    }

    // [Optional] Power your app with Local Datastore. For more info, go to
    // https://parse.com/docs/ios_guide#localdatastore/iOS
    Parse.enableLocalDatastore()

    // [Optional] Track statistics around application opens.
    PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)

    return true
}

func applicationDidBecomeActive(application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the      application was inactive. If the application was previously in the background, optionally refresh the user interface.
    FBSDKAppEvents.activateApp()
}

I dragged the latest Parse and Facebook SDK Frameworks into my project and added the required additional Frameworks (including the libsqlite3.dylib and libz.dylib) through the "Link Binary with Libraries" tab under the "Build Phases" section

I hope this additional information is useful.

like image 778
Armin Avatar asked Apr 20 '15 01:04

Armin


1 Answers

I also faced same problem. In My mine, Facebook sdk 4.1. These were my steps:-

1) Go to Build Settings

2) Type other linker flags. and since i am using objective C. so i clicked on it and add two new values. first is -ObjC and second is $(inherited). After adding these two values your other linker flags would be show as -ObjC -ObjC -|"Pods-...... something like as. i am using cocapods.

3) now type "Allow Non-modular Includes in Framework Modules" and use YES value.

4) then type "Enable Modules (C and Objective-C) and it should be YES.

and clean and build your project. If it still not work for you then please check your Link Binary Libraries. In My Mine, these are frameworks.

Accounts.framework
AddressBook.framework
Foundation.framework
CFNetwork.framework
GoolgeMaps.Framework
Social.framework
CoreData.framework
QuartzCore.framework
Security.framework
CoreLocation.framework
CoreGraphics.framework
UIKit.framework

Please try it Thanks

like image 200
Rahul Rawat Avatar answered Sep 22 '22 06:09

Rahul Rawat