我正在尝试创建一个控制ObjC的iTunes应用程序。我需要一个方法,它将返回iTunes中所有播放列表的数组。
我收到了史上最奇怪、最没用的错误信息.第一,守则:
#import "MusicControl.h"
#import "iTunes.h"
@implementation MusicControl
- (SBElementArray *) playlists {
// Create iTunes Object
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
NSArray *sources = [iTunes sources];
iTunesSource *librarySource = nil;
for (iTunesSource *source in sources) {
if ([source kind] == iTunesESrcLibrary) {
librarySource = source;
break;
}
}
return [librarySource userPlaylists];
}
@end我不知道数组返回是否工作,因为在进行了一些调试之后,我发现这是我创建iTunes对象的第一行,该对象是从复制和粘贴的。
我得到的错误是:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_SBApplication", referenced from:
objc-class-ref in MusicControl.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)到底是怎么回事有什么建议吗?
发布于 2012-02-17 19:07:38
这个消息(和类似的消息)意味着链接器正在寻找某个特定的符号,但是找不到它。在您的例子中,它是SBApplication。
如果您还没有这样做,您应该确保您已经链接到ScriptingBridge框架。
若要添加框架,请单击Xcode中左侧条形图顶部的项目图标,然后选择构建阶段。如果还没有扩展带有二进制库的链接,那么就这样做,并添加框架。
同样的过程也可以用于普通库(框架实际上只是一个库的包装器,至少在本讨论中是如此)。
https://stackoverflow.com/questions/9333551
复制相似问题