2012-04-08 1 views
1

私はこれについてGoogleで答えを見つけることができませんでした。私はココアでコマンドラインユーティリティを構築していますが、NSWorkspaceのインスタンスを作成しようとするとコンパイラエラーが発生します。コマンドラインプログラムで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) 

私はこれと同じを使用しましたこれは、私は非常に単純である、main.mに実装していたコードです他のアプリでコードしても問題はありませんでした。私はNSWorkspace<Foundation/Foundation.h>で定義されていることを知っていて、私は<Cocoa/Cocoa.h>を持っており、Foundationをカバーしています。どのような問題が起こる可能性がありますか?私はNSWorkspaceを知っ

答えて

4

<AppKit/AppKit.h>によってインポートさ<AppKit/NSWorkspace.h><Foundation/Foundation.h>

いいえ、それはだで定義されています。 <Cocoa/Cocoa.h>は、<AppKit/AppKit.h><Foundation/Foundation.h>の両方を含みます。

あなたのツールは、おそらくFoundationに対してのみリンクしています。それをAppKitにリンクするか、Cocoaのすべてにリンクするように変更してください。ターゲットの "Link Binary With Libraries"ビルドフェーズで、 "Cocoa.framework"または "AppKit.framework"を追加します。

+0

ありがとうございました。まさに問題でした。 – sud0

+0

私はCocoaを見つけられませんでした.frameworkはAppKit.frameworkを追加しません。どんなこと? – Tony

関連する問題