2011-09-25 10 views
8

Sto cercando di compilare un'applicazione Cocoa in Xcode 4.0 e sto ottenendo questo errore ...compilazione errori con #include <string> a Cocoa App

fatal error: 'string' file not found 

... quando si cerca di compilare in .pch file su questa linea:

#include <string> 

Ho un altro progetto xcode che fa la stessa cosa, ma non ottiene l'errore. Ho setacciato le impostazioni di compilazione per alcuni diversi, ma non riesco a trovarne uno. L'unica differenza è che il progetto che compila OK è stato avviato come progetto a riga di comando, non come progetto Cocoa, ma le impostazioni di compilazione sono le stesse.

Il sistema operativo di destinazione è Mac OS X 10.6

L'errore si verifica quando si compila l'intestazione precompilata e non arrivare a uno qualsiasi degli altri file. L'unico framework che ha la versione di compilazione è Foundation.framework e quello non di compilazione lo ha pure.

Perché non si trova in un progetto e non nell'altro? Qualche consiglio?

+0

In quale linguaggio di programmazione è scritta la tua app? Non è '' una cosa C++, non una cosa Objective-C? –

+1

Puoi usare lo stl in ogg-C++. Basta dare un nome ai file .mm. Ho completamente ricominciato da questo progetto con un nuovo modello di app per il cacao e ora funziona bene. –

risposta

0

string è un'intestazione C++ (per std :: string). Se stai cercando cose come strcpy devi includere string.h

13

Qual è l'estensione dei tuoi file sorgente? Se è ".m", prova a cambiarlo in obj-cpp ".mm", in modo che Xcode deduca la lingua corretta. o semplicemente mettere C++ - headers specifiche all'interno "#ifdef __cplusplus" blocco

Aggiornamento

La protezione deve esistere per ogni linguaggio compilato nel progetto perché questo specifico comprendono è nel pch. IOW, se fosse tutto C++ e/o objC++ non ci sarebbero errori. Evidentemente, esiste almeno un file che non riconosce il C++ (ad esempio, anche le fonti C o ObjC sono compilate nella destinazione). Pertanto, devi semplicemente proteggerlo in questo modo:

// MONPrefix.pch 

#ifdef __cplusplus 
#include <string> 
#endif 

// same for objc, so your C and C++ sources compile with no error: 
#ifdef __OBJC__ 
#include <Foundation/Foundation.h> 
#endif 
+0

+1 * "inserisci solo C++ - intestazioni specifiche all'interno di" #ifdef __cplusplus "blocco" * - è la soluzione giusta - ma la protezione deve esistere per ogni lingua compilata nel progetto perché questo specifico include è in the pch. iow, se fosse tutto C++ e/o objC++ non ci sarebbero errori. evidentemente, esiste almeno un file che non riconosce C++ (ad esempio c o objc). aggiornerò me stesso - ora vedo che questo è mesi :) – justin

+0

Questo mi ha aiutato a capire come configurare correttamente un Prefix.pch per un progetto Cocos2D-X. Disporre le cose specifiche di C++ in "#ifdef __cplusplus" funziona come un incantesimo. –

Problemi correlati