2012-04-08 52 views
1

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

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>这个涵盖基金会。关于这个问题可能有什么想法?

回答

4

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

不,这是定义在<AppKit/NSWorkspace.h>这是由<AppKit/AppKit.h>进口。 <Cocoa/Cocoa.h>包括<AppKit/AppKit.h><Foundation/Foundation.h>

您的工具可能仅链接到Foundation。将其更改为与AppKit链接,或者仅包含所有可可。在您的目标的“链接二进制库”构建阶段,添加“可可框架”或“AppKit.framework”。

+0

谢谢你正是这个问题。 – sud0 2012-04-08 23:34:16

+0

我没有找到Cocoa.framework,也没有找到添加的AppKit.framework。尽管? – Tony 2013-09-20 20:52:39

相关问题