如何让 NSWorkspace 在我的命令行程序中工作?

sud*_*ud0 2 cocoa nsworkspace

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

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

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

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)
Run Code Online (Sandbox Code Playgroud)

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

Kur*_*vis 5

我知道 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”。