2009-08-04 28 views
0

私のiPhoneプロジェクトにamalgamation sqliteコードを組み込み、iPhoneのsqliteフレームワークへの参照を削除します。エラー: '@'トークンの前に構文エラーがあります(なぜですか?)

私の主な目標は罰金です。

私はgoogle frameworkでユニットテスト用の第2のターゲットを持っています。コンパイルすると、私は次のようになります。

error: syntax error before '@' token

私は理由を理解できません。両方のプロジェクトをsdkに設定しました。

更新:sqliteコード& googleへのリンクを追加しました。私はsqliteコードを追加する前に目標コンパイルを何ヶ月もうまくいくと付け加えなければなりません。私は1263のエラーが発生しますので、私は、サンプルコードを投稿していない - 私はすべてのファイルにエラーが出る - が、これはサンプルのトレースバックです:

@class NSString, Protocol; <== ERROR HERE 

トレースバック:

 cd /Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone 
     setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
     /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.0 -x c-header -arch i386 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs -fpascal-strings -fasm-blocks -O0 -Wreturn-type -Wunused-variable -D__IPHONE_OS_VERSION_MIN_REQUIRED=20000 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk -fvisibility=hidden -mmacosx-version-min=10.5 -gdwarf-2 -iquote /Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/JhonSell.build/Debug-iphonesimulator/Testing.build/Testing-generated-files.hmap -I/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/JhonSell.build/Debug-iphonesimulator/Testing.build/Testing-own-target-headers.hmap -I/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/JhonSell.build/Debug-iphonesimulator/Testing.build/Testing-all-target-headers.hmap -iquote /Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/JhonSell.build/Debug-iphonesimulator/Testing.build/Testing-project-headers.hmap -F/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/Debug-iphonesimulator -F/Volumes/CrashReporter-1.0-rc2/CrashReporter-iPhone -F/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone -I/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/Debug-iphonesimulator/include -I/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/usr/include/libxml2 "-I/Developer/RemObjects Software/Source" -I/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/JhonSell.build/Debug-iphonesimulator/Testing.build/DerivedSources/i386 -I/Users/trtrrtrtr/mamcx/projects/JhonSell/iPhone/build/JhonSell.build/Debug-iphonesimulator/Testing.build/DerivedSources -c /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h -o /var/folders/EA/EAmC8fuyElexZfnpnjdyr++++TI/-Caches-/com.apple.Xcode.501/SharedPrecompiledHeaders/UIKit-dqqtnrciylhdtjbmyglpcezxchmz/UIKit.h.gch 
    In file included from /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12, 
        from /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:8, 
        from /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:9: 
    /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:120: 
error: syntax error before '@' token 
+2

コードの掲載はどうですか?それほど多くは言えません... –

+1

少なくとも、エラーが発生したコードを投稿してください。エラーメッセージは、それをどの行に表示するかを示します。 – sth

+1

と神々は天から来て、あなたが話していたことを私たちに語った。私はそうは思わない。 –

答えて

2

最後に問題を見つけました。

私はiPhoneのターゲットからテスト対象にこれをコピーします。

GCC_DYNAMIC_NO_PIC = NO 
GCC_OPTIMIZATION_LEVEL = 0 
GCC_PRECOMPILE_PREFIX_HEADER = YES 
GCC_PREFIX_HEADER = JhonSell_Prefix.pch 
GCC_PREPROCESSOR_DEFINITIONS = DEBUG 

しかし、なぜ、私は問題を持っていない前に?私は本当に理解していない。

+1

iPhoneの静的ライブラリプロジェクトで全く同じ問題が発生しました。私のテストターゲットはGHUnitを使用しますが、これは問題にはならないと思われます。当初、すべてはうまくコンパイルされましたが、もう1つの静的ライブラリ依存関係と追加のサードパーティコードを追加した後、私はあなたと同じエラーを受けました。 プレフィックスヘッダーの設定をデフォルト(私が '$(SYSTEM_LIBRARY_DIR)/ Frameworks/UIKit.framework/Headers /'だった)からメインターゲット(例えば 'MyProject_Prefix.pch' )。 私を正しい軌道に乗せてくれてありがとう。 :) –

1

を非常に少なくして行くために私の推測では、Objective C/Objective C++の代わりにC/C++でヘッダーをコンパイルするため、C/C++実装ファイルのObjective Cヘッダーを含めることになります。

更新された情報を見ると、実際にはヘッダーファイル、つまりUIKit.hがコンパイルされています。コンパイラはヘッダファイルのタイプを知らないので、デフォルトではCになりますが、もちろん@classを持たないので構文エラーになります。

Xcodeがの2番目のターゲットに UIKit.hをコンパイルする理由を理解する必要があります。

+0

私はそれをどう思いますか?私はこのエラーについての手がかりがありません。 – mamcx

0

gccコマンドラインでファイルを.gchファイルにコンパイルしています。

/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.0 
    # ... 
    -x c-header -arch i386 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs # ... 
    # ... 
    # THE INPUT FILE: 
    /Developer/Platforms/iPhoneSimulator.platform/Developer/ 
     SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Framework/ 
     UIKit.framework/Headers/UIKit.h 
    # THE OUTPUT FILE: 
    -o /var/folders/EA/EAmC8fuyElexZfnpnjdyr++++TI/ 
     -Caches-/com.apple.Xcode.501/ 
     SharedPrecompiledHeaders/UIKit-dqqtnrciylhdtjbmyglpcezxchmz/UIKit.h.gch 

e.e.e. UIKit.hUIKit.h.gch:ヘッダーファイルをトークン化された形式になっているため、高速にインクルードできる「プリコンパイル済み」ヘッダーに変換します。

コンパイラがヘッダーをプリコンパイルすることがわかっているように見えます。それは何とか正しく設定されておらず、実際にコンパイルされるコードとして扱われており、コードがObjective Cなので窒息しています。

+0

おっと、これはoooldであることに気付かなかった。それはとにかくそこにあります。 – Kaz

関連する問題