2012-10-02 11 views
9

Voglio usare boost sul mio Mac.errore di compilazione boost Mac OS X 10.7.4

Mac OS X 10.7.4 Xcode 4.5

ho installato spinta da homebrew.

brew install boost 

La versione di boost è 1.49.0. E ho impostato il mio progetto Xcode.

Aggiungi percorso di ricerca intestazione.

/usr/local/Cellar/boost/1.49.0/include 

Aggiungere librerie

libboost * .dylib 

Quando compilo il mio progetto, ho molti errori. Errore di Clang LLVM 1.0. (voglio caricare un'immagine, ma non riesco a caricare becase non ho più di 10 reputazione.)

use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'? 
use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'? 
too few template arguments for class template '__is_function' 
use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'? 
field has incomplete type 'std::exception_ptr' 
expected ';' at end of declaration list 
no member named 'memcpy' in namespace 'std::__1'; did you mean 'memcpy'? 
no member named 'memcpy' in namespace 'std::__1'; did you mean 'memcpy'? 
expected ';' at end of declaration list 
expected ';' at end of declaration list 
C++ requires a type specifier for all declarations 
'operator==' cannot be the name of a variable or data member 
use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'? 
expected ';' at end of declaration 
expected unqualified-id 
expected ';' at end of declaration list 
unknown type name 'nullptr_t' 
unknown type name 'nullptr_t' 
qualified reference to 'shared_ptr' is a constructor name rather than a type wherever a constructor can be declared 
too many errors emitted, stopping now 

ho controllato questa domanda.

XCode with boost "Semantic Issue - undeclared identifier va_start"

Ma non riuscivo a trovare le risposte. Per favore fatemi sapere se c'è una soluzione.

Il file di intestazione con boost è come questo. !

GLTexture.hpp

#pragma once 

#ifndef __GL_TEXTURE_HPP__ 
#define __GL_TEXTURE_HPP__ 

// Standard libraries. 
#include <iostream> 
#include <fstream> 
#include <string> 

#ifdef _WIN32 
#pragma warning (push) 
#pragma warning (disable:4819) 
#endif 

// Smart pointers. 
#include <boost/shared_ptr.hpp> 
#include <boost/scoped_ptr.hpp> 
#include <boost/shared_array.hpp> 

// Foreach macros. 
#include <boost/foreach.hpp> 

// Regular expression. 
#include <boost/regex.hpp> 

// Image I/O. 
#define png_infopp_NULL (png_infopp)NULL 
#define int_p_NULL (int*)NULL 
#include <boost/gil/gil_all.hpp> 
#include <boost/gil/extension/io/jpeg_io.hpp> 
#include <boost/gil/extension/io/png_io.hpp> 

// File operations, 
#include <boost/filesystem.hpp> 

// Linear algebra, 
#include <boost/numeric/ublas/vector.hpp> 
#include <boost/numeric/ublas/matrix.hpp> 
#include <boost/numeric/ublas/io.hpp> 

// String functions. 
#include <boost/algorithm/string.hpp> 

// Serialization 
#include <boost/serialization/serialization.hpp> 
#include <boost/serialization/string.hpp> 
#include <boost/serialization/vector.hpp> 
#include <boost/archive/xml_iarchive.hpp> 
#include <boost/archive/xml_oarchive.hpp> 
#include <boost/serialization/version.hpp> 

#ifdef _WIN32 
#pragma warning (pop) 
#endif 

// OpenGL and OpenGL Utility Toolkit 
#ifdef _WIN32 

#include <GL/glew.h> 
#include <GL/GLUT.h> 

#elif defined __APPLE__ 

#include <OpenGL/OpenGL.h> 
#include <GLUT/GLUT.h> 


#endif 

#include "TextureManager.hpp" 
#include <time.h> 

class TextureManager; 

using namespace std; 


/// function to convert RGB image to RGBA image. 
/// Filling its alpha channel with 255. 
/// This function is called from boost::gil::copy_and_convert_pixels() 
namespace boost { 
    namespace gil { 
     template <> void color_convert<rgb8_pixel_t,rgba8_pixel_t>(const rgb8_pixel_t& src,rgba8_pixel_t& dst); 
    } 
} 


class GLTexture 
{ 
public: 

    //Destructor 
    ~GLTexture(); 

    //Return instance of GLTexture 
    static boost::shared_ptr<GLTexture> getInstance(const std::string& filename, bool _isVolatile = true); 

    //Load image file and generate texture 
    bool LoadFromFile(boost::shared_ptr<GLTexture> texture); 

    //Bind texture when the texture exists. If the texture doesn't exist, this method generates a texture. 
    static void bindTexture(boost::shared_ptr<GLTexture> texture); 

    //Setter of texFileName 
    void setTextureFile(const std::string filename); 
    //Setter of volatile Flag 
    void setIsVolatile(bool _isVolatile); 

    //Getter of texture ID 
    inline const GLuint& getTextureID(void)const{ 
     return this->texture; 
    }; 

    //Overload of operator to sort list 
    friend bool operator <(const boost::shared_ptr<GLTexture>& texture1, const boost::shared_ptr<GLTexture>& texture2); 
    friend std::ostream& operator <<(ostream& os, const boost::shared_ptr<GLTexture>& texture); 




public: 
    GLuint texture;    //texture id 
    std::string texFileName; //image file path 
    int width;     //width of image 
    int height;     //height of image 
    clock_t start, end;   //start is the timing of bindTexture, end is the timing of delete, these are used to sort list. 
    bool isVolatile;   //the flag whether this texture is volatile or not. true is volatile, and false is not volatile. To keep texture, this is false. 
    bool isRead;    //the flag whether this texture already exists in texturelist. true means "exists", false means "not exists". 

    boost::shared_ptr<boost::gil::rgba8_image_t> pixelData_ptr;      //smart pointer to contain pixelData 
    boost::shared_ptr<boost::gil::rgba8_image_t::const_view_t> viewwithAlpha_ptr; //smart pointer to contain viewData 




private: 
    //Forbid copy constructor 
    GLTexture(); 
    GLTexture(const std::string& imageFilePath, bool _isVolatile = false); 
    GLTexture(const GLTexture& glTexture); 
    GLTexture& operator = (const GLTexture& glTexture); 

    //load image from SSD 
    bool LoadImage(const std::string& filename); 




}; 

#endif 

TextureManager.hpp

#pragma once 

#ifndef __TEXTURE_MANAGER_HPP__ 
#define __TEXTURE_MANAGER_HPP__ 

// Standard libraries. 
#include <iostream> 
#include <fstream> 
#include <string> 

#ifdef _WIN32 
#pragma warning (push) 
#pragma warning (disable:4819) 
#endif 

// Smart pointers. 
#include <boost/shared_ptr.hpp> 

#include <boost/shared_array.hpp> 

// Foreach macros. 
#include <boost/foreach.hpp> 

// Regular expression. 
#include <boost/regex.hpp> 

// Image I/O. 
#define png_infopp_NULL (png_infopp)NULL 
#define int_p_NULL (int*)NULL 
#include <boost/gil/gil_all.hpp> 
#include <boost/gil/extension/io/jpeg_io.hpp> 
#include <boost/gil/extension/io/png_io.hpp> 

// File operations, 
#include <boost/filesystem.hpp> 

// Linear algebra, 
#include <boost/numeric/ublas/vector.hpp> 
#include <boost/numeric/ublas/matrix.hpp> 
#include <boost/numeric/ublas/io.hpp> 

// String functions. 
#include <boost/algorithm/string.hpp> 

// Serialization 
#include <boost/serialization/serialization.hpp> 
#include <boost/serialization/string.hpp> 
#include <boost/serialization/vector.hpp> 
#include <boost/archive/xml_iarchive.hpp> 
#include <boost/archive/xml_oarchive.hpp> 
#include <boost/serialization/version.hpp> 

#ifdef _WIN32 
#pragma warning (pop) 
#endif 

// OpenGL and OpenGL Utility Toolkit 
#ifdef _WIN32 

#include <GL/glew.h> 
#include <GL/GLUT.h> 

#elif defined __APPLE__ 

#include <OpenGL/OpenGL.h> 
#include <GLUT/GLUT.h> 


#endif 

#include "GLTexture.hpp" 


class GLTexture; 

class TextureManager 
{ 
public: 
    TextureManager(void); 
    ~TextureManager(void); 

    //Generate Texture 
    static void genTexture(boost::shared_ptr<GLTexture> texture); 


    static void setTexture(const boost::shared_ptr<GLTexture> texture); 

    static void deleteTexture(); 
    static bool checkList(const std::string& filename); 


private: 

    //Forbid copy constructor 
    TextureManager(const TextureManager& texManager); 
    TextureManager& operator = (const TextureManager& texManager); 

}; 

#endif 
+0

Hai provato a cambiare il compilatore LLVM da Apple a GCC LLVM? – Ninten

+0

Puoi mostrare il codice rilevante che produce gli errori? –

+0

@Ninten Ho provato a cambiare il compilatore in GCC LLVM, ma ho avuto gli stessi errori. – micchyboy

risposta

3

Ho avuto problemi Analogamente ho soved il problema che: Xcode-> Buid Impostazioni-> C++ Dialetto lingua (GNU ++ 11) -> Libreria standard C++ (libC++ (LLVM C++ con C++ 11)

+1

Ho lo stesso problema su Xcode 7.2 ma cambiare le impostazioni della lingua C++ in modo che corrisponda al tuo (e anche ad altre combinazioni) non ferma gli errori. – Dai

+0

@Dai hai risolto quello? –

+0

@MichaelIV No, mi dispiace. Ho mollato. – Dai

7

Hai utilizzato il percorso di ricerca ricorsivo per le intestazioni? In tal caso, cambiarlo in non ricorsivo. Questo potrebbe risolvere il problema.

Problemi correlati