compiling a C++ class in Xcode: error during compilation: stl vector

cbrulak picture cbrulak · Feb 11, 2009 · Viewed 28.2k times · Source

I have a C++ class that compiles fine on linux with gcc and on widows in visual studio.

boid.h:

#ifndef BOID_CLASS_HEADER_DEFINES_H
#define BOID_CLASS_HEADER_DEFINES_H
#include "defines.h"

class Boid {

public:
     // Initialize the boid with random position, heading direction and color
     Boid(float SceneRadius,float NormalVel);

     .....
protected:
     ...
};

#endif

and in boid.cpp:

#include "Boid.h"

// Initialize the boid with random position, heading direction and color
Boid::Boid(float SceneRadius,float NormalVel) 
{
    ....
}

However, I get the following error when I compile this code in Xcode:

Compiling Boid.h: "error: vector: No such file or directory"

Any ideas? I thought you could take C/C++ code and compile it in Xcode without issues?

Thanks

EDIT: Added defines.h (also added #endif to sample, but that was in the original code)

EDIT 2: I am getting a different error after a commenting out a couple of includes there were empty: the vector error above.

#ifndef BOID_NAV_DEFINES_H
#define BOID_NAV_DEFINES_H
#include <stdlib.h>
#include <vector>
#include "Vector3d.h"
#include "Point3d.h"
#include "win_layer.h"
#endif

Answer

epatel picture epatel · Feb 11, 2009

Are you including the C++ header in a .m file?

.m files are treated as .c files with Objective-C extensions.

.mm files are treated as .cpp files with Objective-C extensions, then it's called Objective-C++

Just rename any .m file to .mm, right-click or ctrl-click and select rename on the file in Xcode.