2016-10-31 13 views
2

CoreFoundation、CoreServices、またはCoreGraphics(Carbonなど)を含むものをコンパイルしようとすると、次のエラーメッセージが表示されます。Mac OSX Sierra CoreFoundation/CoreServices/CoreGraphicsが動作しない

gcc x.c -framework Carbon 
In file included from /usr/include/Availability.h:180:0, 
       from /usr/local/Cellar/gcc/6.2.0/lib/gcc/6/gcc/x86_64-apple-darwin16.1.0/6.2.0/include-fixed/math.h:46, 
       from /System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:24, 
       from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:19, 
       from /System/Library/Frameworks/Carbon.framework/Headers/Carbon.h:20, 
       from x.c:1: 
/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h:53:34: error: 'introduced' undeclared here (not in a function) 
    kCFISO8601DateFormatWithYear API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) = (1UL << 0), 
           ^
/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h:777:39: error: 'deprecated' undeclared here (not in a function) 
const CFStringRef kCFURLLabelColorKey API_DEPRECATED("Use NSURLLabelColorKey", macosx(10.6, 10.12), ios(4.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0)); 
            ^
/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h:777:39: error: 'message' undeclared here (not in a function) 
const CFStringRef kCFURLLabelColorKey API_DEPRECATED("Use NSURLLabelColorKey", macosx(10.6, 10.12), ios(4.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0)); 
            ^
In file included from /System/Library/Frameworks/Security.framework/Headers/Security.h:81:0, 
       from /System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h:43, 
       from /System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h:27, 
       from /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h:23, 
       from /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h:22, 
       from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:39, 
       from /System/Library/Frameworks/Carbon.framework/Headers/Carbon.h:20, 
       from x.c:1: 
/System/Library/Frameworks/Security.framework/Headers/Authorization.h:194:7: error: variably modified 'bytes' at file scope 
    char bytes[kAuthorizationExternalFormLength]; 
     ^~~~~ 
In file included from /System/Library/Frameworks/CoreGraphics.framework/Headers/CGContext.h:18:0, 
       from /System/Library/Frameworks/CoreGraphics.framework/Headers/CGBitmapContext.h:9, 
       from /System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.h:11, 
       from /System/Library/Frameworks/ApplicationServices.framework/Headers/ApplicationServices.h:35, 
       from /System/Library/Frameworks/Carbon.framework/Headers/Carbon.h:24, 
       from x.c:1: 
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGFont.h:53:40: error: initializer element is not constant 
static const CGFontIndex kCGGlyphMax = kCGFontIndexMax; 

誰でも問題の原因が考えられますか? MacOS SierraまたはXcodeをバージョン8.1にアップデートした後にこれが開始されたかどうかはわかりません。編集:プログラムはXcodeでコンパイルされているようですが、自作のgcc 6.2では端末ではコンパイルできません。

答えて

0

あなたは「コア・財団」でこれをタグ付けされたが、Foundation Release Notes for macOS 10.12 & iOS 10の最初のカップルの段落でさらに詳細に説明し、あなたが話している可用性マクロは、(API可用性マクロは、もう少し詳細に説明する。

私はあなたが(CoreFoundationの& CoreGraphicsが依存するように見えるこれらのマクロを拾うために)、あなたが今後大丈夫でなければなりません単にあなたのビルドでFoundationフレームワークを含める必要があります疑い。

+0

よろしくお願いいたします。 –

+0

私は#include を自分のcファイルに入れようとしましたが、大量のエラーが発生します。私も-framework Foundationでコンパイルしようとしましたが、助けにならないようです。私は何か間違っているのですか? –

+0

@ Robert.Sはい。あなたが現在間違っている主なことは、ObjCのみを使ってCをコンパイルしようとしていることです。 – hidefromkgb

1

here述べたように、カーボンは長い間廃止されましたしかし、AppKitを試してみてください:

私にとっては210
gcc x.c -framework AppKit 

私はOS Xの

ための純粋な-Cアプリケーションを書くとき、それは正常に動作します[EDIT:]今すぐコード。

#include <ApplicationServices/ApplicationServices.h> 
#include <unistd.h> 

int main() { 
    while (!CGEventSourceKeyState(kCGEventSourceStateHIDSystemState, 0x7E)) 
     usleep(10000); 
    return 0; 
} 

このアプリは唯一のAppKitに依存し、矢印(スキャンコード0x7E)まで押されるまでループします。

ここでは、コードの完全なリスト(正規のヘッダーのどこにいるかわからない):Carbon's Virtual Key Codesです。

+0

AppKitは、ある種のウィンドウを作成せずに、キーがKeyDownの場合など、現在のグローバルキーボードの状態を読み取ることができますか?私は端末アプリケーションを作成し、これは私がそれを使用する唯一の機能です。 –

+1

@ Robert.S:コードを追加しました。 – hidefromkgb

+0

あなたは最高です、ありがとう! –

1

/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h:53:34: error: 'introduced' undeclared here (not in a function) kCFISO8601DateFormatWithYear API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) = (1UL << 0),

私見では、このヘッダは、GCC 6.2でしか打ち鳴らすでサポートされていないことだけです。おそらく、gcc-7で "修正"されるでしょう。

gcc-5.xとEl Capitan(sdk 10.11)では、gcc-6.xがこのようなAppleヘッダーで構築するために必要な同様の問題があります。

関連する問題