2

私はグーグルでこれに対する答えを見つけることができませんでした。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/Foundation.h>ものを<Cocoa/Cocoa.h>インポートしました。問題が何であるかについてのアイデアはありますか?

4

1 に答える 1

5

NSWorkspaceがで定義されていることを知っています<Foundation/Foundation.h>

いいえ、<AppKit/NSWorkspace.h>によってインポートされ<AppKit/AppKit.h>ます。と<Cocoa/Cocoa.h>の両方が含まれます。<AppKit/AppKit.h><Foundation/Foundation.h>

あなたのツールはおそらくFoundationに対してのみリンクしています。AppKitに対してもリンクするように、またはCocoa全体に対してリンクするように変更します。ターゲットの「LinkBinarywithLibraries」ビルドフェーズで、「Cocoa.framework」または「AppKit.framework」を追加します。

于 2012-04-08T22:15:40.983 に答える