我正在尝试使用XCode编译一个简单的命令行工具:

#import <Cocoa/Cocoa.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    //NSSpeechSynthesizer *speeker = [[NSSpeechSynthesizer alloc] initWithVoice: nil];

    NSLog(@"%@", [NSSpeechSynthesizer availableVoices]);

    NSLog(@"Hello, World!");
    [pool drain];
    return 0;
}


甚至以为我要导入Cocoa.h,但出现链接错误:


  未定义的符号:
  “ _OBJC_CLASS _ $ _ NSSpeechSynthesizer”,
  引用自:
        objc-class-ref-to-NSSpeechSynthesizer
  在byc.o ld中:未找到符号
  collect2:ld返回1退出状态


任何人都知道发生了什么事吗?

最佳答案

您导入了标头,因此编译可以正常进行,但是由于未针对提供NSSpeechSynthesizer的框架进行链接而导致链接失败。您需要链接到Application Kit框架(除Foundation之外)或Cocoa伞框架(而不是Foundation)。

无论选择哪种框架,都将其添加到项目的组树中的“链接框架”组中(通过右键单击该组并选择“添加现有框架”),并确保也将其添加到目标中。

10-08 01:16