Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Include <string> not found compile error in Xcode 4.2

I'm getting include not found compile error in XCode. I have an iOS app project that i use Objective-c and c++ as mix.

Initially, i created one .h file and one .cpp file in my ios project. Then, I renamed the .cpp file to .mm file.

Here is my .h file;

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);

}

What am I missing? Do I need to add std c++ library to my targetS? Something related to Search Header Paths?

I just need to use string type.

Thanks much for in advance

like image 232
ilker Acar Avatar asked Apr 26 '12 00:04

ilker Acar


2 Answers

select project -> build setting -> apple LLVM compiler 5.1 -> language

In Compile Sources As change to Objective-C++

like image 66
AmyG Avatar answered Sep 16 '22 14:09

AmyG


There's a quirk in XCode. I noticed it in 7.3. Most projects recognize .mm files and the STL, while one project I had did not. The fix was that I had to click on the top-left project icon, then click Targets > Build Phases > Link Binary with Libraries > and add in AppKit.framework. Next, I had to click Targets > Build Settings > search on "Compile Sources", and set it to "Objective C++" on all possible columns. Then, do a Clean and then a Build from the Product menu. This compiled properly then. Then, go back to that Compile Sources again and set it back to "According to File Type" on all possible columns. Then, click Build from the Product menu again. At that point, it compiled properly and allowed me to utilize the "according to file type" option, which I like better.

Oh, and if doing Cocoa stuff, don't forget to add the following header in your files:

#import <Cocoa/Cocoa.h>

And if doing command line stuff, don't forget to add the following instead of the Cocoa header:

#import <Foundation/Foundation.h>
like image 43
Volomike Avatar answered Sep 17 '22 14:09

Volomike