【问题标题】:Link error while accessing NSSpeechSynthesizer访问 NSSpeechSynthesizer 时出现链接错误
【发布时间】:2010-11-05 18:04:31
【问题描述】:

我正在尝试用 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 个退出状态

有谁知道怎么回事???

【问题讨论】:

    标签: objective-c cocoa linker


    【解决方案1】:

    您导入了标头,因此编译工作,但链接失败,因为您没有链接到提供 NSSpeechSynthesizer 的框架。您需要链接到 Application Kit 框架(除了 Foundation)或 Cocoa 伞形框架(而不是 Foundation)。

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

    【讨论】:

    • 彼得,很抱歉这个愚蠢的问题,但我应该在哪里宣传这个选项?我尝试打开项目设置,但在链接器部分找不到合适的位置。 O:-)
    • 没关系,我找到了。这比我想象的要容易:只需将 cocoa.framework 添加到“外部框架和库”组。
    • 顺便说一句,这里是如何做到这一点,以防其他人需要此信息:wiki.remobjects.com/wiki/…
    • 费尔南多:糟糕,抱歉。我以为你在使用make。我会编辑答案。
    猜你喜欢
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多