2012-04-08 73 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

相關問題