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?