Include <string> не найдена ошибка компиляции в Xcode 4.2

Я получаю include not found compile error в XCode. У меня есть проект приложения iOS, который использует Objective-c и С++ как mix.

Сначала я создал один файл .h и один .cpp файл в моем проекте ios. Затем я переименовал файл .cpp в файл .mm.

Вот мой .h файл;

TestLog.h

#ifndef CalculatorDemo_TestLog_h
#define CalculatorDemo_TestLog_h
#include <string>
using namespace std;

class TestLog
{
private:
    string logString;
public:
    void Log(string logMessage);
};


#endif

TestLog.mm

#include "TestLog.h"

void TestLog::Log(string logMessage)
{
    //this->logString->append(logMessage);

}

Что мне не хватает? Нужно ли добавлять std С++-библиотеку в мои целевые объекты? Что-то связано с путями заголовков поиска?

Мне просто нужно использовать строковый тип.

Большое спасибо заранее

Ответы

Ответ 2

выберите проект → настройка сборки → Яблочный компилятор LLVM 5.1 → язык

В Compile Sources As измените на Objective-C++

Ответ 3

В XCode есть причуда. Я заметил это в 7.3. Большинство проектов распознают файлы .mm и STL, в то время как один проект у меня не был. Исправлено, что мне нужно было щелкнуть по иконке проекта сверху вниз, затем нажмите "Цели" > "Сформировать фазы" > "Связывание двоичных файлов с библиотеками" > и добавьте в AppKit.framework. Затем мне нужно было щелкнуть "Цели" > "Настройки сборки" > "Поиск" в "Скомпилировать источники" и установить его на "Objective С++" во всех возможных столбцах. Затем выполните команду "Очистить", а затем "Создать" в меню "Продукт". Тогда это скомпилировано правильно. Затем вернитесь к этому источнику компиляции и верните его в "По типу файла" во всех возможных столбцах. Затем снова нажмите "Создать" в меню "Продукт". В этот момент он правильно скомпилировался и позволил мне использовать опцию "в соответствии с типом файла", которая мне больше нравится.

О, и если вы делаете Cocoa материал, не забудьте добавить в свои файлы следующий заголовок:

#import <Cocoa/Cocoa.h>

И если вы выполняете команду, не забудьте добавить следующее вместо заголовка Cocoa:

#import <Foundation/Foundation.h>

Ответ 4

Я считаю, что вам нужно включить весь путь в библиотеку. аналогично "основам" и "uiview".

#import <Foundation/Foundation.h>

или

#import <UIKit/UIKit.h>

и да, убедитесь, что вы добавили библиотеку в свою цель.