6

Carbon アプリを Cocoa アプリに変換していますが、以下に相当する Cocoa が見つかりません。

UpdateSystemActivity(UsrActivity);

私を正しい方向に向けようとする Mac 関係者はいますか? ありがとう。

更新:私は64ビットを構築しています。32 ビットのビルドは正常に動作しますが、64 ビット用にビルドすると、UpdateSystemActivity (およびその他) の「このスコープで宣言されていないシンボル」エラーが発生します。

UPDATE2 : 私は以下をインポートしています:

#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>
#import <OpenGL/CGLMacro.h>

64ビットをビルドするときにインポートする必要があるものは他にありますか?

UPDATE3 : 追加#import <CoreServices/CoreServices.h>しても役に立ちませんでした。UpdateSystemActivity と UsrActivity がこのスコープで宣言されていないことを示すコンパイラ エラーが引き続き発生します。

UPDATE4 : OSServices/Power.h にファイルが見つかりません。私は 10.5 SDK に対してビルドしており、クイック検索で次のように表示されます。

$ pwd
/Developer/SDKs
$ find . -name Power.h
./MacOSX10.3.9.sdk/Developer/Headers/CFMCarbon/OSServices/Power.h
./MacOSX10.3.9.sdk/Developer/Headers/CFMCarbon/Power.h
./MacOSX10.3.9.sdk/Developer/Headers/FlatCarbon/Power.h
./MacOSX10.3.9.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/Power.h

./MacOSX10.4u.sdk/Developer/Headers/CFMCarbon/OSServices/Power.h
./MacOSX10.4u.sdk/Developer/Headers/CFMCarbon/Power.h
./MacOSX10.4u.sdk/Developer/Headers/FlatCarbon/Power.h
./MacOSX10.4u.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/Power.h

./MacOSX10.5.sdk/Developer/Headers/FlatCarbon/Power.h
./MacOSX10.5.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/Power.h

それでも私は得る:

Mac.mm:6:29: error: OSServices/Power.h: No such file or directory
Mac.mm:6:29: error: OSServices/Power.h: No such file or directory
4

3 に答える 3

3

ここでの問題は、__LP64__が定義されている場合にPower.hを除外するOSServices.hの行にあるようです。10.5で64ビットを構築する場合、UpdateSystemActivityは実際には未定義です。

良いニュースは、シンボルが実際にCoreServices.frameworkに存在することです。アクセスするには2つの方法があります。

  1. 前方宣言:extern "C" OSErr UpdateSystemActivity(UInt8);
  2. 試したPower.hを明示的に含めます。あなたの試みの問題は、OSServices/が検索パスへの道を見つけられないことです。次のように含めることができます:#import </Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h>

SnowLeopardのコピーは手元にありませんが、次に行うことは、SnowLeopardが修正されているかどうかを確認することです。そうでない場合は、これは明らかにSDKのバグであるため、レーダーを提出してください。

于 2009-08-25T07:18:30.487 に答える
2

UpdateSystemActivityCocoa アプリ内から引き続き呼び出すことができるはずです。非推奨とマークされていません。

API のドキュメントでは、API を取得するためのインポートが指定されていますCoreServices/CoreServices.hが、ヘッダー (特にOSServices/OSServices.h) を調べると、64 ビット環境ではファイルが省略されていることがわかります。それにもかかわらず、 64 ビットではオフになっているPower.h(whereが定義されている)のセクションがあり、それらの 1 つではありません。UpdateSystemActivityUpdateSystemActivity

それを踏まえて、#import <OSServices/Power.h>直接試してみて、それが機能するかどうかを確認してください。(ヘッダーも検出されるようにするには、プロジェクトに CoreServices フレームワークを含める必要があります。)

于 2009-08-24T21:15:52.233 に答える