Nii*_*mus 2 xcode mach-o objective-c ios google-cast
我刚刚开始将一个Android应用程序移植到iOS上,并且遇到了一个主要的障碍,尽管我在搜索许多类似的问题时仍然无法弄清楚.
我试图遵循CastVideos示例中实现的模式,其中GoogleCast API封装在我调用的单例类中CastManager
.要使用我的单例类,我#import "CastManager.h"
在AppDelegate.m中.然后在CastManager.h中,我#import <GoogleCast/GoogleCast.h>
可以使用它的类和协议作为CastManager的公共接口的一部分.但是,因为我在CastManager.m和AppDelegate.m中导入CastManager.h,所以链接器正在从GoogleCast框架中查找重复的符号.
这是我的CastManager.h:
#import <GoogleCast/GoogleCast.h>
#import <Foundation/Foundation.h>
@interface CastManager : NSObject
@property(nonatomic, strong) GCKDeviceScanner *deviceScanner;
+ (instancetype)sharedCastManager;
@end
Run Code Online (Sandbox Code Playgroud)
和相应的CastManager.m:
#import "CastManager.h"
@implementation CastManager
+ (instancetype)sharedCastManager {
NSLog(@"sharedCastManager");
static CastManager *singleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
singleton = [[self alloc] init];
});
return singleton;
}
- (instancetype)init {
NSLog(@"init()");
if (self = [super init]) {
self.deviceScanner = [[GCKDeviceScanner alloc] init];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
这是我的AppDelegate.m的主要部分:
#import "AppDelegate.h"
#import "CastManager.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
CastManager *castManager = [CastManager sharedCastManager];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会在尝试构建项目时导致链接器出现以下错误:
duplicate symbol _kGCKDeviceCapabilityVideoOut in:
/Users/nate/Library/Developer/Xcode/DerivedData/MyCastApp-ezrgxdnlvywpanerezulnarzknno/Build/Intermediates/MyCastApp.build/Debug-iphonesimulator/MyCastApp.build/Objects-normal/x86_64/AppDelegate.o
/Users/nate/Library/Developer/Xcode/DerivedData/MyCastApp-ezrgxdnlvywpanerezulnarzknno/Build/Intermediates/MyCastApp.build/Debug-iphonesimulator/MyCastApp.build/Objects-normal/x86_64/CastManager.o
... many similar errors ommitted for brevity ...
duplicate symbol _kGCKDeviceCapabilityAudioIn in:
/Users/nate/Library/Developer/Xcode/DerivedData/MyCastApp-ezrgxdnlvywpanerezulnarzknno/Build/Intermediates/MyCastApp.build/Debug-iphonesimulator/MyCastApp.build/Objects-normal/x86_64/AppDelegate.o
/Users/nate/Projects/MyCastApp/GoogleCast.framework/GoogleCast(GCKDevice.o)
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
据我所知,这完全复制了CastVideos样本中定义的模式,但样本编译得很好,我的没有,我已经仔细研究了两个项目,试图找到不同的东西,但我只是不喜欢看不到.此外,我没有看到这样做有什么问题,并期望它能正常工作.真的,我想不出任何其他办法.
以下是CastVideos示例中的相关文件以供比较:
其他问题指向不适用或不解决的解决方案:
.m
意外导入文件.我已经通过https://github.com/nshafer/MyCastApp检查了我的示例项目中的问题
任何帮助是极大的赞赏!
编辑:副本有点相关,它肯定是相同的符号,但那里的答案没有帮助,因为我没有使用Object-C++,而只是Objective-C.我没有.mm文件,只有一个.m文件.
归档时间: |
|
查看次数: |
896 次 |
最近记录: |