【问题标题】:How can I get NSWorkspace to work in my Command Line program?如何让 NSWorkspace 在我的命令行程序中工作?
【发布时间】:2012-04-21 10:59:30
【问题描述】:

我无法在 Google 上找到此问题的答案。我正在 Cocoa 中构建命令行实用程序,当我尝试创建 NSWorkspace 的实例时,出现编译器错误。这是我在main.m 中实现的代码,非常简单:

NSArray *runningApps = [[NSWorkspace sharedWorkspace] runningApplications];
        for (NSRunningApplication *app in runningApps) {
            if (![app terminate])
                [app forceTerminate];
        }

当我尝试编译和运行程序时,我得到了:

Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NSWorkspace", referenced from:
  objc-class-ref in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在其他应用程序中使用过相同的代码并且没有问题。我知道NSWorkspace 是在<Foundation/Foundation.h> 中定义的,并且我导入了涵盖Foundation 的<Cocoa/Cocoa.h>。关于问题可能是什么的任何想法?

【问题讨论】:

    标签: cocoa nsworkspace


    【解决方案1】:

    我知道 NSWorkspace 定义在<Foundation/Foundation.h>

    不,它在<AppKit/NSWorkspace.h> 中,由<AppKit/AppKit.h> 导入。 <Cocoa/Cocoa.h> 包括 <AppKit/AppKit.h><Foundation/Foundation.h>

    您的工具可能只链接到 Foundation。也将其更改为链接到 AppKit,或者只是链接到所有 Cocoa。在目标的“Link Binary with Libraries”构建阶段,添加“Cocoa.framework”或“AppKit.framework”。

    【讨论】:

    • 谢谢你这正是问题所在。
    • 我没有找到 Cocoa.framework 和 AppKit.framework 来进行添加。有吗?
    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2012-04-26
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多