2009-07-03 10 views
4

je suis tombé sur cette erreur lors de la construction de mon code avec CLANG:Clang donnant des erreurs se plaignent de fichier d'en-tête défectueux UILocalizedIndexedCollation.h

 
In file included from /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:31, 
       from /Users/waspfish/Documents/NanaimoStudio/Projects/iPhoneMonk/Projects/IdeaOrganizer/IdeaOrganizer_Prefix.pch:13, 
       from :1: 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:13: error: syntax error before ‘AT_NAME’ token 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:21: error: syntax error before ‘}’ token 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:23: fatal error: method definition not in @implementation context 
compilation terminated. 
{standard input}:32:FATAL:.abort detected. Assembly stopping. 

J'ai fini par exclure la UILocalizedIndexedCollation.h de UIKit.h et construit tout bien. Une idée de ce qui aurait pu causer le problème? Je ne peux pas imaginer Apple envoie un fichier d'en-tête défectueux.

Répondre

7

Le problème vient de SDK 3.0 qui utilise maintenant gcc 4.2 mais scan-build utilise toujours/usr/bin/gcc. Vous devez donc indiquer à scan-build d'utiliser /usr/bin/gcc-4.2 à la place.

scan-build --use-cc=/usr/bin/gcc-4.2 xcodebuild -configuration Debug 

Et voilà!

+0

Cela a tout arrangé pour moi. Merci! – bbrown

+0

Bon travail Ça marche aussi pour moi. – harshalb

+0

Cela fonctionne pour moi !! Merci. – Jirapong

0

Habituellement, quand je vois quelque chose comme ça, je nettoie la construction et redémarre Xcode, alors tout allait bien. Avec GCC 4.2, parfois un mauvais pch pourrait trouver un hoquet comme celui-ci, mais clang utilise une implémentation totalement différente de pch. Vous pouvez vouloir supprimer complètement le répertoire de construction alors que Xcode ne fonctionne pas.

Techniquement, clang n'est pas supporté pour le développement de l'iPhone, mais je l'utilise pour les compilations de simulateurs, et je ne vois pas les erreurs de compilation que vous voyez, donc (au moins pour moi) cela fonctionne. Une chose me trotte dans la tête, vous vous référez à l'édition de votre UIKit.h. Je comprends ce que vous avez fait, mais ajuster les en-têtes du système est un gros non-non. Y a-t-il une chance que vous ayez fait cela pour d'autres raisons, parce que si vous n'utilisez pas d'en-têtes de stock, cela pourrait se produire.

+0

J'ai supprimé le dossier constructeur et nettoyé toutes les cibles et je reçois toujours la même erreur. Une idée? – Boon

2

ingénieur d'Apple avait confirmé qu'ils avaient un bogue dans le cadre UIKit:

Nous avons une solution simple pour ce bogue UIKit. En UILocalizedIndexedCollation.h changer ceci:

UIKIT_EXTERN @interface UILocalizedIndexedCollation : NSObject 
to 
UIKIT_EXTERN_CLASS @interface UILocalizedIndexedCollation : NSObject 

Denis2342