ConnectSDK / Connect-SDK-iOS

iOS source project for Connect SDK

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Undefined symbols for architecture arm64

hassan379 opened this issue · comments

hello
thx for this great lib
but i have problem and i spend a hole day to fix this

Undefined symbols for architecture arm64:
"OBJC_CLASS$_ImageInfo", referenced from:
objc-class-ref in CastingMediaManager.o
"OBJC_CLASS$_MediaInfo", referenced from:
objc-class-ref in CastingMediaManager.o
"OBJC_CLASS$_DiscoveryManager", referenced from:
objc-class-ref in CastingMediaManager.o
"OBJC_CLASS$_CapabilityFilter", referenced from:
objc-class-ref in CastingMediaManager.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

here is my code
//
// CastingMediaManager.m
//
//
// Created by hussamabd on 7/24/16.
//
//

#import "CastingMediaManager.h"
@implementation CastingMediaManager
{
    DiscoveryManager *discoveryManager;
    ConnectableDevice *provider;
    MediaInfo *mediaInfo;
    ImageInfo *imageInfo;
}
+(CastingMediaManager*)sharedManager{
    static CastingMediaManager *castingMediaManager;
    if (!castingMediaManager) {
        castingMediaManager=[[CastingMediaManager alloc] init];
    }
    return castingMediaManager;
}
-(id)init{
    if (self=[super init]) {
        NSArray *videoCapabilities=@[kMediaPlayerPlayVideo,kMediaControlAny,kVolumeControlVolumeUpDown];
        NSArray *imageCapabilities=@[kMediaPlayerDisplayImage];
        CapabilityFilter *videoCapabilitiesFilter=[CapabilityFilter filterWithCapabilities:videoCapabilities];
        CapabilityFilter *imageCapabilitiesFilter=[CapabilityFilter filterWithCapabilities:imageCapabilities];
        discoveryManager = [DiscoveryManager sharedManager];
        [discoveryManager setCapabilityFilters:@[videoCapabilitiesFilter,imageCapabilitiesFilter]];
        [discoveryManager startDiscovery];
    }
    return self;
}

-(void)showDevicePacker{
    discoveryManager.devicePicker.delegate = self;
    [discoveryManager.devicePicker showPicker:self];
}
-(void)disconnectDevice{
    [provider disconnect];
    _castingDidBegin=false;
}
- (void)devicePicker:(DevicePicker *)picker didSelectDevice:(ConnectableDevice *)device
{
    provider = device;
    provider.delegate = self;
    [provider connect];
}
-(void)setupCastingMediaDataWithMediaUrl:(NSURL*)mediaUrl IconURL:(NSURL*)iconURL Title:(NSString*)title Description:(NSString*)description MimeType:(NSString*)mimeType{
    if (!mediaInfo) {
       mediaInfo=[[MediaInfo alloc] initWithURL:mediaUrl mimeType:mimeType];
    }
    mediaInfo.url=mediaUrl;
    mediaInfo.mimeType=mimeType;
    mediaInfo.title = title;
    mediaInfo.description = description;
    imageInfo = [[ImageInfo alloc] initWithURL:iconURL type:ImageTypeThumb];
    [mediaInfo addImage:imageInfo];
}
- (void)connectableDeviceReady:(ConnectableDevice *)device
{
    if ([mediaInfo.mimeType isEqualToString:@"video/mp4"]) {
        [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(startCastingVideo) userInfo:0 repeats:0];
    }
    else
    {
        [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(startCastingImage) userInfo:0 repeats:0];
    }
}
-(void)startCastingImage{

    __block MediaLaunchObject *launchObject;
    [provider.mediaPlayer displayImageWithMediaInfo:mediaInfo success:^(MediaLaunchObject *mediaLanchObject) {
       _castingDidBegin=true;
        launchObject = mediaLanchObject;
    } failure:^(NSError *error) {

    }];
}
-(void)startCastingVideo{

    __block MediaLaunchObject *launchObject;

    [provider.mediaPlayer playMediaWithMediaInfo:mediaInfo
                                     shouldLoop:NO
                                        success:
     ^(MediaLaunchObject *mediaLaunchObject) {
         _castingDidBegin=true;
         NSLog(@"play video success");
         // save the object reference to control media playback
         launchObject = mediaLaunchObject;

         // enable your media control UI elements here
     }
                                        failure:
     ^(NSError *error) {
         NSLog(@"play video failure: %@", error.localizedDescription);
     }];
}
- (void)connectableDeviceDisconnected:(ConnectableDevice *)device withError:(NSError *)error
{

}
@end

and also when i add these flags $(inherited) -ObjC -l"ConnectSDK" -l"icucore" -l"z" -framework "GoogleCast" -framework "SystemConfiguration"
to other linker flags
i get this error

ld: 35 duplicate symbols for architecture arm64

thx in advance

i fixed the problem by making a new xcode project then
installed all libraries include connectsdk by cocoapod after that i moved all my files from older project to the new one

@hassan379
can you share the project that you configured?