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

时间:2012-04-08 22:09:11

标签: cocoa nsworkspace

我无法在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>,我已导入<Cocoa/Cocoa.h>,其中包含基金会。关于问题可能是什么想法?

1 个答案:

答案 0 :(得分:4)

  

我知道NSWorkspace是在<Foundation/Foundation.h>

中定义的

不,它位于<AppKit/NSWorkspace.h><AppKit/AppKit.h>导入。 <Cocoa/Cocoa.h>包括<AppKit/AppKit.h><Foundation/Foundation.h>

您的工具可能仅与基金会相关联。将它更改为与AppKit链接,或者只是连接所有Cocoa。在目标的“Link Binary with Libraries”构建阶段,添加“Cocoa.framework”或“AppKit.framework”。